json_decode要求的字符串比较严格
1. 使用UTF-8编码
2. 不能在最后元素有逗号
3. 不能使用单引号
4. 不能有\r,\t,如果有请替换
解决方案
一、bom头问题
json字符串中的BOM头是不可见字符,某些编辑器默认会加上BOM头。
0 1 |
<?php $info = json_decode(trim($info,chr(239).chr(187).chr(191)),true); |
二、语法错误
使用 json_last_error() 函数打印一下错误,页面显示4,也就是语法错误。
0 1 |
<?php echo $errorinfo = json_last_error(); //输出4 语法错误 |
出现这个问题是因为在 json 字符串中反斜杠被转义,只需要用 htmlspecialchars_decode() 函数处理一下 $content 即可:
0 |
$info= htmlspecialchars_decode($info); |
三、其他破坏json字符串的字符
0 1 |
<?php $info= preg_replace('/[\x00-\x1F\x80-\x9F]/u', '', trim($info)); |