我有一个ajax调用,我将json_string作为post变量发送。我在服务器上使用json_decode进行解码,但是当字符串中包含\时,它会失败。
$arr = array("data-0"=>'{"id":"Ch35ZWIjfMwG5EUWlVJvGJGWeZi+j+v27AGX+qtUZ14=","pos_x1":"0","pos_y1":"0"}',
"data-1"=>'{"id":"h+ZjS3+FBoEebtxsHGmgbr\Dy8zTmgrLjhcZH8z3enpw=","pos_x1":"1","pos_y1":"152"}');
foreach($arr as $key=>$val)
print_r(json_decode($val,true));
当我尝试运行上面的内容时,第二个值没有被解码。
" id"值是加密文本,因此无法控制。
尝试过addslashes,但没有用。
答案 0 :(得分:0)
那是因为\D
不是有效的转义序列。 addslashes
会在所有"
之前加上斜线,这会使情况变得更糟。
相反,请考虑修复您的JSON来源 - 我知道您说它是加密文本,但这并不意味着您无法正确地json_encode
它获得它你的数据。