删除断行

时间:2011-07-11 09:57:50

标签: php line-breaks nl2br

之前我问过这个问题,但我似乎没有得到正确的答案。我在文本中遇到新行问题。 Javascript和jQuery不喜欢这样的事情:

alert('text

text);

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

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

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

3 个答案:

答案 0 :(得分:1)

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

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

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

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

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

答案 1 :(得分:0)

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

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

然后我要睡觉了......来回答问题为时已晚。

答案 2 :(得分:0)

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