关于php:运行json_encode后替换\\ n(换行符)

Replacing \r\n (newline characters) after running json_encode

因此,当我运行json_encode时,它会抓住\\\\
\\\\
也来自MySQL。我试图重写数据库中的字符串无济于事。我尝试将MySQL中的编码从默认的latin1_swedish_ci更改为ascii_bin和utf8_bin。我已经完成了大量的str_replace和chr(10),chr(13)东西。我不知道该说些什么或做些什么,所以我要把这个留在这里...。

1
2
3
4
5
6
7
$json = json_encode($new);
if(isset($_GET['pretty'])) {
echo str_replace("\\/","/", jsonReadable(parse($json)));
} else {
$json = str_replace("\\/","/", $json);
echo parse($json);
}

jsonReadable函数从这里开始,而parse函数从这里开始。已经存在的str_replaces是因为我收到了奇怪的格式化html标签,例如。最后,$ new是一个上面精心设计的数组。根据要求提供完整代码。

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


字符串是否包含" "
\\
"(如0x0D 0x0A)或文字字符串'\\
\\
'?如果是前者,则应删除所有换行符。

1
2
3
$json = preg_replace("!\
?\
!"
,"", $json);

如果要用br标记替换换行符,可以选择将第二个参数"替换为"
"。对于后一种情况,请尝试以下操作:

1
2
3
$json = preg_replace('!\\\
?\\\
!'
,"", $json);


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


我曾经遇到过类似的问题:

1
2
3
4
5
6
7
8
$p_num = trim($this->recp);
$p_num = str_replace("\
"
,"", $p_num);
$p_num = str_replace("\
"
,",", $p_num);
$p_num = str_replace("\
"
,',', $p_num);
$p_num = rtrim($p_num,"\\x00..\\x1F");

不确定这是否能满足您的要求。