【问题标题】:JavaScript and array of strings containing \r and / or \n charactersJavaScript 和包含 \r 和/或 \n 字符的字符串数组
【发布时间】:2011-05-29 00:39:56
【问题描述】:

我有一个从数据库动态生成的数组。基本上它是 PHP 打印到该部分页面的对象数组。

最终输出类似于: var arPersons=[{'name':'aaa',description:'2-3 lines text in 300px wide div'},{etc}];

现在,当换行符 (\n) 或回车符 (\r) 出现在从 CMS 写入的描述文本中时,此数组似乎存在问题。

我该如何解决这个问题? 我目前所做的是str_replace(array("\r\n","\r","\n"),"",$description);,其中 $description 会针对循环中的每个元素进行更改。

我不确定这是最好的方法。当有 \n 和 \r 字符时,有没有办法告诉 JS 代码不要搞砸?还是应该用 PHP 而不是 JS 来做?

编辑: mess up 我的意思是该数组停止执行后的任何代码。如果我完全删除描述或仅删除 \n 和 \r 字符,它将起作用(在这两种情况下)。

谢谢。

【问题讨论】:

  • 你到底是什么意思,“搞砸了”?出了什么问题?换行符或回车符本质上没有任何非法或不当之处。
  • 它会在该部分之后破坏任何 JS 代码。如果我删除它的新行字符。如果这有什么不同,我也在页面上使用 jQuery。

标签: php javascript arrays newline carriage-return


【解决方案1】:

最好的方法是从一开始就使用json_encode()。它完全转义了输出到 Javascript 的所有内容。

http://php.net/json-encode

【讨论】:

  • 嗯,聪明。我希望它不会影响描述属性中的 HTML,因为它需要它具有 HTML。我会试一试,然后回来。谢谢
  • @Francisc 不,它不会破坏 HTML。它所做的只是提供必要的引用以保留 JSON 语法,因此 HTML 标记将被完全忽略。
  • 谢谢,这正是我需要的。 :)
【解决方案2】:

PHP 有一个 nl2br() 函数,它接受字符串中的换行符并将它们转换为<br />s。如果您想保留格式,您可以通过它运行您的字符串。 nl2br 的低于标准的文档是here

【讨论】:

  • OP 想要输出到 Javascript。 nl2br 无济于事;那是 HTML 的。
  • 似乎stackoverflow在你的回答中解析了一些东西:“......并将它们变成s”
  • 我在 str_replace 之前尝试了 nl2br,但由于某种奇怪的原因它不起作用。
猜你喜欢
  • 1970-01-01
  • 2021-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-30
  • 1970-01-01
  • 2021-06-17
  • 2018-02-20
相关资源
最近更新 更多