2011-07-11 44 views
1

我以前问过这个问题,但我似乎没有得到正确的答案。我在文字中出现了新行的问题。 Javascript和jQuery的不喜欢这样的事情:删除折线

alert('text 

text); 

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

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

这通常不会出现问题,但我想在首次加载收件箱时将所有用户邮件全部取出,然后在他们选择某个邮件时通过jQuery将其显示给他们。

回答

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

+0

这样做!我想其他的例子错过了'm'。那正是我所需要的。我会尽可能接受。 – Phillip

+1

感谢上帝Stackoverflow存在。只是节省了我的时间! –

0

编辑:好了后多绊倒自己,我相信你想这样的:

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

而且随着我要睡觉......来不及进行答疑解惑。

+0

没有工作,还是以折线到位。 preg_replace函数( '/ \ S \ S + /', '',nl2br($ _ POST [ '消息'],假)); – Phillip

0

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