2011-06-23 73 views
0

我在我的應用程序中有幾個區域,我有< textarea>標記,以便用戶可以將消息輸入到另一個。一些消息的問題困擾了我一段時間,但我永遠無法弄清楚問題所在。我會立即打開所有消息並將其保存在隱藏標籤中。當用戶'打開'消息時,來自標籤的數據將被收集並顯示在用戶的燈箱中。出於某種原因,它不會打開其中的一些消息。字符替換:斷行

我的一位用戶注意到,如果您在郵件中使用換行符(使用'shift + enter'),它會在嘗試檢索郵件時中斷Javascript。由於這只是在閱讀郵件時遇到的一個問題,所以我應該能夠在郵件首先發送時替換它。

如何檢測換行並在提交時將其替換?

str_replace(???,"/n",$string) 
+0

你的意思是''str_replace(「\ n」,???,$ string)''?你想用什麼替換換行符? – grai

回答

2

正如你發現的那樣,javascript無法處理換行符中間字符串。換句話說,下面的輸出會導致JS錯誤...

<body onload="alert('te 
st');"> 

你可以在虛線的末尾添加一個反斜槓來修復這個錯誤...

<body onload="alert('te \ 
st');"> 

由於user765476說,你可以在文本上使用PHP的nl2br函數。但要補充一點,通常最好只在實際構建html輸出的時候這麼做。原因之一是,如果您允許用戶編輯他們已提交的文本,他們將在文本框中的任何地方看到<br>,並且您將不得不設計另一個腳本來替換那些<br>的文本。

如果你真的想從根本上雖然提交換行符(及任何可能的回車)禁止用戶,然後使用類似這樣的基本PHP代碼用一個空格來代替它們...

str_replace(array("\r\n", "\r", "\n"), ' ', $message); 

注意:搜索字符串的順序很重要。第一遍替換全部"\r\n"的第二遍替換任何剩餘的"\r"的第三遍替換任何剩餘的"\n"的(編輯:我忘記了"\r"在IE瀏覽器中被識別,而不是在某些其他瀏覽器中)。

0

也許this function 是你在找什麼?它將換行符轉換爲<br/>標籤。