运行 json_encode 后替换 \r\n (换行符)

Posted

技术标签:

【中文标题】运行 json_encode 后替换 \\r\\n (换行符)【英文标题】:Replacing \r\n (newline characters) after running json_encode运行 json_encode 后替换 \r\n (换行符) 【发布时间】:2011-05-12 22:11:15 【问题描述】:

所以当我运行 json_encode 时,它​​也会从 mysql 中获取 \r\n。我试过重写数据库中的字符串无济于事。我尝试将 MySQL 中的编码从默认的 latin1_swedish_ci 更改为 ascii_bin 和 utf8_bin。我已经做了很多 str_replace 和 chr(10)、chr(13) 的东西。我不知道还能说什么或做什么,所以我就把这个留在这里....

$json = json_encode($new);
if(isset($_GET['pretty'])) 
echo str_replace("\/", "/", jsonReadable(parse($json)));
 else 
$json = str_replace("\/", "/", $json);
echo parse($json);

jsonReadable 函数来自here,解析函数来自here。已经存在的 str_replaces 是因为我得到了像 这样的奇怪格式的 html 标签。最后,$new 是一个在上面制作的数组。应要求提供完整代码。

帮助我 ***。你是我唯一的希望

【问题讨论】:

你读过 JSON 规范了吗? json.org 是的,我使用 JSON 已经有很长时间了,事情是这个脚本的输出被 flash 用于 CMS 和 flash 不像 \r\n 的东西。它只是插入我们不想要的新行。我们想要。是的,我试过 nl2br,没有运气。 于是有人决定不在 Flash 中正确实现 JSON。可爱的。 【参考方案1】:

字符串是否包含“\r\n”(如 0x0D 0x0A)或文字字符串 '\r\n'?如果是前者,这应该删除所有换行符。

$json = preg_replace("!\r?\n!", "", $json);

如果您想用 br 标记替换换行符,也可以将第二个参数“”替换为“”。对于后一种情况,请尝试以下操作:

$json = preg_replace('!\\r?\\n!', "", $json);

【讨论】:

这不起作用,它们仍然存在。我认为也许它与MySQL有关:/【参考方案2】:

不要在 JSON 中替换它,在编码之前在源代码中替换它。

【讨论】:

【参考方案3】:

我有类似的问题,我用过:

$p_num = trim($this->recp);
$p_num = str_replace("\n", "", $p_num);
$p_num = str_replace("\r", ",", $p_num);
$p_num = str_replace("\n",',', $p_num);
$p_num = rtrim($p_num, "\x00..\x1F");

不确定这是否有助于满足您的要求。

【讨论】:

这也不起作用,我认为这可能是 MySQL 问题。谢谢你的尝试! 高五

以上是关于运行 json_encode 后替换 \r\n (换行符)的主要内容,如果未能解决你的问题,请参考以下文章

用 PHP 替换 \r\n

PHP 用 <br/> 替换文字 \r\n (不替换新行)

如何用 <br/> 替换换行符或 \r\n?

在java中用<br />替换\n和\r\n

无法使用 R 中 readtext 包中的 readtext() 替换从 PDF 文件中提取的文本中的“\r\n-”

textarea保持文本样式