【发布时间】:2012-07-01 03:40:26
【问题描述】:
我遇到了一些关于 json_encode 的问题。
当我对具有新行的数组进行 json_encode 时,它不会转义新行,而是删除 \ 并保留 n。
ex: $array = array('name'=> "some text \n\r text");
$results = json_encode($array);
它正在将some text nr text 保存在数据库中。
我正在使用php 5.3.8。
编辑:
这是我正在使用的原始代码
$attr = array();
for($i=0; $i < count($_POST['key']); $i++){
$attr[$_POST['key'][$i]] = $_POST['value'][$i];
}
echo json_encode(array('custom' => $attr));
这些POST 值来自表单。
【问题讨论】:
-
您确定是 json_encode 导致了问题吗?如果你 print_r($results); 你会得到什么?在浏览器中出来?啊,应该是\r\n...
-
Cannot reproduce. 你确定要查看原始输出吗?
-
1) 不应该是
\r\n,2) 如何将该字符串发送到数据库?您是否正确引用/转义了该值(或至少使用addslashes())? -
和我一起工作正常,相同的 PHP 版本。在插入数据库之前您还进行了哪些其他操作?
-
谢谢,当我执行 print_r($array) 时,新行输出很好,如果我执行 json_encode() 之后,json_decode() 输出会像上面那样没有换行符..