php json 不转义字符串,PHP的json_encode不会转义所有JSON控制字符
有什么原因導致PHP的json_encode函數無法對字符串中的所有JSON控制字符進行轉義?
例如,讓我們采用一個跨越兩行并包含控制字符(\ r \ n“ / \)的字符串:
$s = <<
First row.
Second row w/ "double quotes" and backslash: \.
END;
$s = json_encode($s);
echo $s;
// Will output: "First row.\r\nSecond row w\/ \"double quotes\" and backslash: \\."
?>
請注意,回車符和換行符不轉義。為什么?
我使用jQuery作為JS庫,并且當您完全100%信任傳入的數據時,它的$
.getJSON()函數可以正常工作。否則我會像其他人一樣使用JSON.org的庫json2.js。但是,如果您嘗試解析該編碼字符串,則會引發錯誤:
JSON.parse(<?php echo $s ?>); // Will throw SyntaxError
而且您無法獲取數據!如果刪除或轉義該字符串中的\ r \ n“和\,則JSON.parse()不會引發錯誤。
是否有任何現有的良好的PHP函數用于轉義控制字符。具有搜索和替換數組的簡單str_replace將不起作用。
總結
以上是生活随笔為你收集整理的php json 不转义字符串,PHP的json_encode不会转义所有JSON控制字符的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第三者责任险100万赔偿范围
- 下一篇: opporeno5k有来电闪光灯吗 开启