2010-12-21 92 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

相关问题