file_get_contents后得到的JSON数据,json_decode后出现NULL的原因和解决方法:
【分析排错】:
1.json字符串必须以双引号包含,可用:
$str = str_replace("'", '"', $str);
2.json字符串必须是utf8编码,可用 :
$str = iconv('gbk', 'utf8', $str);
3.不能有多余的逗号 如:[1,2,],用正则替换掉,可用:
preg_replace('/,\s*([\]}])/m', '$1', $str)
【大多就是出错在这个地方】
4.file_get_contents得到的JSON数据是带有BOM的utf-8,所以需要用正则匹配一下有就去掉。可用:
// 第一种方法去掉BOM if(preg_match('/^\xEF\xBB\xBF/',$json)){ $json = substr($json,3); } $data = json_decode(trim($json),true); // 第二种方法去掉BOM $data = json_decode(trim($json,chr(239).chr(187).chr(191)),true);
以下是曾经用file_get_contents返回的JSON就碰到了这样的问题(JSON数据是带有BOM的):
下面就是加上:上面说的第4种去掉带有BOM的方法,当然你也可以1、2、3、4全写上!
header("Content-type:text/html;charset=utf-8"); $json = file_get_contents("URL地址"); $data = json_decode(trim($json,chr(239).chr(187).chr(191)),true); print_r($data);
转载请注明来源地址:小川编程 » https://www.youhutong.com/index.php/article/index/73.html
1、本站发布的内容仅限用于学习和研究目的.请勿用于商业或非法用途,下载后请24小时内删除。
2、本站所有内容均不能保证其完整性,不能接受请勿购买或下载,如需完整程序,请去其官方购买正版使用
3、本站联系方式Email:admin@youhutong.com ,收到邮件会第一时间处理。
4、如侵犯到任何版权问题,请立即告知本站(立即在线告知),本站将及时删除并致以最深的歉意