博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP中file_get_contents函数获取带BOM的utf-8,然后json_decode() 返回null的问题
阅读量:5227 次
发布时间:2019-06-14

本文共 2573 字,大约阅读时间需要 8 分钟。

  问题:用php读取文件中的json数据,怎么解析都是返回null。

{"a":1,"b":2,"x":[{"c":3},{"d":4},{"e":5}]}

  读取文件,使用了file_get_contents函数。

$json = '{"a":1,"b":2,"x":[{"c":3},{"d":4},{"e":5}]}';        var_dump(json_decode($json));        var_dump(json_decode($json, true));

  如果直接在php中读取json字符串,是没有错的,怎么从文件读取就错了呢。

  搜索得以下结果:

  PHP: json_decode - Manual

  

  php使用json_decode返回NULL – 服务器运维与Web架构

  

  php json_decode null - toeasy - 博客园

  

  json_decode() 得到null-夜色-Yes-PHPChina - Powered by Discuz!

  

  PHP5中file_get_contents函数获取带BOM的utf-8文件内容时需注意 - wanglianghuaihua的日志 - 网易博客

  

 

  关键结果在是后面两个。造成json_decode() 解析null的原因是,json文件是UTF-8格式,带有BOM。

  修正后代码如下,即可正常解析。

$dmText = file_get_contents( AROOT .'data' . DS . 'DMType.json.php');        if(preg_match('/^\xEF\xBB\xBF/',$dmText))        {             $dmText = substr($dmText,3);        }        //trim        $dmText = t($dmText);                echo $dmText;        /* create array list from comments */        $dmList = json_decode($dmText,true);    //当该参数为 TRUE 时,将返回 array 而非 object 。        var_dump($dmList);

  显示结果:

View Code
{    "success": "true",    "total":"4",    "items": [        {
"id":"1","c":"asdaEG","tb": "dm_suppliertype", "cn": "供应商类型","tips":"供应商类型"}, {
"id":"2","c":"adsafR","tb": "suppliertype2", "cn": "供应商类型2","tips":"供应商类型"}, {
"id":"3","c":"ada222","tb": "suppliertype3", "cn": "供应商类型3","tips":"供应商类型"}, {
"id":"4","c":"23jetG","tb": "suppliertype4", "cn": "供应商类型4","tips":"供应商类型"} ]}array(3) { ["success"]=> string(4) "true" ["total"]=> string(1) "4" ["items"]=> array(4) { [0]=> array(5) { ["id"]=> string(1) "1" ["c"]=> string(6) "asdaEG" ["tb"]=> string(15) "dm_suppliertype" ["cn"]=> string(15) "供应商类型" ["tips"]=> string(15) "供应商类型" } [1]=> array(5) { ["id"]=> string(1) "2" ["c"]=> string(6) "adsafR" ["tb"]=> string(13) "suppliertype2" ["cn"]=> string(16) "供应商类型2" ["tips"]=> string(15) "供应商类型" } [2]=> array(5) { ["id"]=> string(1) "3" ["c"]=> string(6) "ada222" ["tb"]=> string(13) "suppliertype3" ["cn"]=> string(16) "供应商类型3" ["tips"]=> string(15) "供应商类型" } [3]=> array(5) { ["id"]=> string(1) "4" ["c"]=> string(6) "23jetG" ["tb"]=> string(13) "suppliertype4" ["cn"]=> string(16) "供应商类型4" ["tips"]=> string(15) "供应商类型" } }}

 

转载于:https://www.cnblogs.com/howgoo/archive/2013/01/31/PH_file_get_contents_BOM_json_decode_null.html

你可能感兴趣的文章
jquery的$(document).ready()和onload的加载顺序
查看>>
Python Web框架Django (五)
查看>>
.net学习之继承、里氏替换原则LSP、虚方法、多态、抽象类、Equals方法、接口、装箱拆箱、字符串------(转)...
查看>>
Android 开发 ThreadPool(线程池) 总结
查看>>
【poj1568】 Find the Winning Move
查看>>
【codevs1033】 蚯蚓的游戏问题
查看>>
TP框架中的page分页实现
查看>>
[转]跨越千年的RSA算法
查看>>
传奇学者应明生
查看>>
【程序执行原理】
查看>>
第二次项目冲刺(Beta阶段)5.24
查看>>
python的多行注释
查看>>
连接Oracle需要jar包和javadoc文档的下载
查看>>
UVA 10976 - Fractions Again?!
查看>>
Dreamweaver cc新版本css单行显示
查看>>
【android】安卓的权限提示及版本相关
查看>>
JavaScript可否多线程? 深入理解JavaScript定时机制
查看>>
IOS基础学习
查看>>
PHP 导出 Excell
查看>>
python之-框架
查看>>