博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php json_decode失败,返回null
阅读量:4964 次
发布时间:2019-06-12

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

  在使用json_decode之前,一定得保证字符串是utf-8编码,而执行json_decode失败的原因有很多,罗列如下:

      1)编码不对;

      2)字符串格式不对;

      3)字符串格式对,但是有异常字符;

      为了解决这个问题,可以考虑保证编码对上,json字符串可以正常解析,虽然说的简单,但是有许多工作要做,现在上一种万能解决方案,不啰嗦,看代码:

    

// 获得编码,如果有其它编码,完善下面的编码列表即可$encode = mb_detect_encoding($json_info, array("ASCII","UTF-8","GB2312","GBK","BIG5","EUC-CN"));// 将字符串转为utf-8编码 $tmp = iconv($encode,"UTF-8//IGNORE", $json_info);// reject overly long 2 byte sequences, as well as characters above U+10000 and replace with ? $tmp = preg_replace('/[\x00-\x08\x10\x0B\x0C\x0E-\x19\x7F]'.                     '|[\x00-\x7F][\x80-\xBF]+'.                      '|([\xC0\xC1]|[\xF0-\xFF])[\x80-\xBF]*'.                       '|[\xC2-\xDF]((?![\x80-\xBF])|[\x80-\xBF]{2,})'.                        '|[\xE0-\xEF](([\x80-\xBF](?![\x80-\xBF]))|(?![\x80-\xBF]{2})|[\x80-\xBF]{3,})/S',                         '?', $tmp);// reject overly long 3 byte sequences and UTF-16 surrogates and replace with ? $tmp = preg_replace('/\xE0[\x80-\x9F][\x80-\xBF]'.                     '|\xED[\xA0-\xBF][\x80-\xBF]/S','?', $tmp);// decode$result_data = json_decode($tmp,true);

 

参考地址:

https://magp.ie/2011/01/06/remove-non-utf8-characters-from-string-with-php/

http://blog.sina.com.cn/s/blog_65db99840101fxzv.html

https://segmentfault.com/a/1190000006154011

 

转载于:https://www.cnblogs.com/foreverstars/p/9093636.html

你可能感兴趣的文章
dashucoding记录2019.6.7
查看>>
IOS FMDB
查看>>
编码总结,以及对BOM的理解
查看>>
九涯的第一次
查看>>
Android中全屏或者取消标题栏
查看>>
处理器管理与进程调度
查看>>
页面懒加载
查看>>
向量非零元素个数_向量范数详解+代码实现
查看>>
java zip 中文文件名乱码_java使用zip压缩中文文件名乱码的解决办法
查看>>
java if 用法详解_Java编程中的条件判断之if语句的用法详解
查看>>
kafka的java客户端_KAFKA Producer java客户端示例
查看>>
java -f_java学习笔记(一)
查看>>
java 什么题目好做_用java做这些题目
查看>>
java中的合同打印_比较方法违反了Java 7中的一般合同
查看>>
php 位运算与权限,怎么在PHP中使用位运算对网站的权限进行管理
查看>>
php include效率,php include类文件超时
查看>>
matlab sin函数 fft,matlab的fft函数的使用教程
查看>>
wcdma下行如何解扩解扰 matlab,WCDMA技术基础.ppt
查看>>
MySQL date_format() 函数
查看>>
mysql 时间处理
查看>>