2011-07-11 64 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有效的值所需的一切。