2010-12-21 125 views
2

我有一個從數據庫動態生成的數組。基本上它是一個PHP對象打印出來的對象數組。包含 r和/或 n字符的JavaScript和字符串數組

的最終輸出somrthing像: var arPersons=[{'name':'aaa',description:'2-3 lines text in 300px wide div'},{etc}];

現在,似乎當作爲從寫入新行caracters(\n)或回車字符(\r)出現在說明書文本以與此數組的一個問題CMS。

我該如何解決這個問題? 我目前所做的是str_replace(array("\r\n","\r","\n"),"",$description);,其中$ description對循環中的每個元素都進行了更改。

我不確定這是最好的方法。有什麼辦法可以告訴JS代碼在不知何故有\ n和\ r字符時不要搞亂?它應該仍然在PHP而不是JS中完成?

編輯: 通過mess up我的意思是在該數組停止執行後的任何代碼。如果我完全刪除了描述,或者只是\ n和\ r字符,它將起作用(在這兩種情況下)。

謝謝。

+1

你究竟是什麼意思,「搞砸了」?出了什麼問題?對於換行符或回車符來說,沒有任何固有的非法或不恰當的地方。 – Pointy 2010-12-21 19:16:21

+0

它在該部分後打破任何JS代碼。如果我刪除它的新行字符它的作品。如果這有什麼不同,我也在頁面上使用jQuery。 – Francisc 2010-12-21 19:20:39

回答

6

最好的方法是從一開始就使用json_encode()。它完全轉義了輸出到Javascript的所有內容。

http://php.net/json-encode

+0

嗯,聰明。我希望它不會影響description屬性中的HTML,因爲它需要HTML。我會試一試並復出。謝謝 – Francisc 2010-12-21 19:21:52

1

PHP有nl2br()函數,它在一個字符串換行,並把它們轉化成<br />秒。如果你想保持格式化,你可以通過它來運行你的字符串。 nl2br的sub-par文檔是here

相關問題