1

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

alert('text

text);

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

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

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

4

3 回答 3

1

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

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

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

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

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

于 2011-07-11T10:10:01.200 回答
0

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

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

然后我要睡觉了……回答问题已经太晚了。

于 2011-07-11T10:08:03.190 回答
0

我通常使用格式化字符串以在 JavaScript 中使用,因为它完成了生成JS 有效值json_encode()所需的一切。

于 2011-07-11T11:43:12.637 回答