有谁知道为什么会这样?
var_dump(json_decode(stripslashes(json_encode(array("O'Reiley"))))); // array(1) { [0]=> string(8) "O'Reiley" }
var_dump(json_decode(stripslashes(json_encode(array("O\'Reiley"))))); // NULL
JSON函数是否使用'
?
答案 0 :(得分:5)
我不确定,但json_last_error()应该:)
我的猜测是,json_encode()
对\'
做stripslashes()
然后打破的事情 - 例如添加另一个“\”以逃避反斜杠。
在解码错误之前,是不是使用striplslashes()
摆弄了json编码的字符串?
答案 1 :(得分:2)
我没有太深入地看待它,但看起来你的代码是
使用PHP数组并将其转换为json字符串
用那根绳子捣碎
尝试将mucked字符串解码为json
想象这个
$json_string = json_encode(array("O\'Reiley");
$json_string = stripslashes($json_string);
//it's no longer json, its just some random non-conforming string
var_dump(json_decode($json_string))
答案 2 :(得分:0)
你应该尝试不带stripslashes()
$result = json_encode(striptslashes(array("O\'Reiley")));
if(json_last_error() > 0){
$result = json_encode(array("O\'Reiley"));
}