php处理json_decode返回的值,php的json_decode()返回NULL的解决方法

关于php的json_decode()返回NULL这个问题有很多情况,这里只是针对其中的一种情况来说。

问题

使用json_decode()对 thinkPHP返回的JSON 格式的字符串进行解码,但是始终无法转换成功,打印数据为null。

特别纳闷的一件事就是,我另外单独使用原生PHP做了一个测试,返回相同的JSON数据,但是可以解码。文本对比之后,数据代码是一模一样!(这里给大家推荐一个在线文本对比工具:传送门)

问题截图

正常的json数据,可以进行解码

6fac1bb024289efc37641273616d54ca.png

不正常的json数据,解码返回null

9522e628d32f376fb0835dc07de20d83.png

解决

其实仔细观察之后,json数据确实是一模一样,唯一的区别就是string类型的长度,出问题的json数据是长度多了三个。于是,使用urlencode()函数转字符串为编码,看到字符串开头有3个字符\xEF\xBB\xBF, 是bom头隐藏在里面。

正常的字符:

6d13b63a2b0a42ca0766c9d9507f8ce5.png

存在bom头的字符:

19b5584fd274585086751533aaa9c7b0.png

找到问题根源所在之后,出现的问题也就迎刃而解,使用$content = trim($content, “\xEF\xBB\xBF”);来转化一下,将多余出来的bom头去掉,json_decode就可以正常解码,不再返回null了。

本文由 有花不见叶 原创发布于光阴小栈,未经许可,禁止转载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值