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

时间:2010-11-19 23:01:38

标签: php mysql str-replace json

因此,当我运行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标签,如< / h1>。最后,$ new是一个上面精心制作的数组。根据要求提供完整的代码。

帮我StackOverflow。你是我唯一的希望

3 个答案:

答案 0 :(得分:9)

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

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

(可选)将第二个参数“”替换为“< br />”如果你想用br标签替换换行符。对于后一种情况,请尝试以下方法:

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

答案 1 :(得分:7)

请勿在JSON中替换它,在编码之前将其替换为源。

答案 2 :(得分:2)

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

$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");

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