【问题标题】:Removing Break Lines删除折断线
【发布时间】:2011-10-02 16:07:05
【问题描述】:

我以前问过这个问题,但我似乎没有得到正确的答案。我对文本中的新行有疑问。 Javascript 和 jQuery 不喜欢这样的东西:

alert('text

text);

当我从包含断行的数据库表中提取信息时,JS 和 jQuery 无法正确解析它。我被告知要使用 n2lbr(),但是当有人在向消息中输入文本时使用 'shift+enter' 或 'enter' 时这不起作用(这就是我遇到这个问题的地方)。使用它时,我仍然会得到单独的行。似乎在换行符后正确应用了 BR 标签,但它仍然在那里留下了中断。

任何人都可以在这里提供一些帮助吗?我使用 jQuery 获取消息数据并将其发送到 PHP 文件进行存储,所以我想在那里解决问题。

这通常不是问题,但我想在用户第一次加载收件箱时提取所有用户消息,然后在他们选择某条消息时通过 jQuery 将其显示给他们。

【问题讨论】:

    标签: php line-breaks nl2br


    【解决方案1】:

    您可以使用正则表达式将换行符替换为空格:

    alert('<?php preg_replace("/[\n\r\f]+/m","<br />", $text); ?>');
    

    m 修饰符将匹配换行符,在这种情况下我认为这很重要。

    编辑:抱歉,没有意识到您实际上想要&lt;br /&gt; 元素,而不是空格。相应地更新了答案。

    edit2:和@LainIwakura 一样,我在正则表达式中犯了一个错误,部分原因是之前的编辑。我的新正则表达式只替换 CR/NL/LF 字符,而不是任何空白字符 (\s)。注意有一堆unicode linebreak 字符我还没有承认...如果你需要处理这些,你可能想阅读regexp syntax for unicode

    【讨论】:

    • 做到了!我猜其他的例子都缺少'm'。这正是我所需要的。我会接受的。
    • 感谢 Stackoverflow 的存在。再次节省了我的时间!
    【解决方案2】:

    编辑:好吧,经过多次绊倒我自己,我相信你想要这个:

    $str = preg_replace('/\n+/', '<br />', $str);
    

    我要睡觉了……回答问题太晚了。

    【讨论】:

    • 没用,仍然返回并保留断线。 preg_replace('/\s\s+/','',nl2br($_POST['message'],false));
    【解决方案3】:

    我通常使用json_encode() 来格式化字符串以便在 JavaScript 中使用,因为它完成了制作 JS-valid 值所需的一切。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-08
      • 2023-03-22
      • 1970-01-01
      相关资源
      最近更新 更多