php json_decode返回null
在使用json_decode函数想把json串转化为数组的时候,出现了null,当时还以为是因为json对字符串的长度有限制,还以为是因为两边少了引号,经过多次处理,发现都没有效果。 百度各种帖子,发现此问题还有人遇到过,那么这个问题肯定也就有解决的方法啦~看过几个帖子,总结问题的出现原因大概有这么几点。我这里把收集到的都总结了
json_decode要求的字符串比较严格
1. 使用UTF-8编码
2. 不能在最后元素有逗号
3. 不能使用单引号
4. 不能有\r,\t,如果有请替换
解决方案
一、bom头问题
json字符串中的BOM头是不可见字符,某些编辑器默认会加上BOM头。
<?php
$info = json_decode(trim($info,chr(239).chr(187).chr(191)),true);
二、语法错误
使用 json_last_error() 函数打印一下错误,页面显示4,也就是语法错误。
<?php
echo $errorinfo = json_last_error(); //输出4 语法错误
出现这个问题是因为在 json 字符串中反斜杠被转义,只需要用 htmlspecialchars_decode() 函数处理一下 $content 即可:
$info= htmlspecialchars_decode($info);
三、其他破坏json字符串的字符
<?php
$info= preg_replace('/[\x00-\x1F\x80-\x9F]/u', '', trim($info));
四、多了反斜杠,那么去掉它
$info = stripslashes($info) ;
我是使用第三种方案解决的问题~