遇到一个关于php7 json_decode null问题!
具体问题描述:
1、确认文件无BOM头
2、尝试了如下多种方式去除非法字符串,但是仍然输出NULL
$some_string = htmlspecialchars_decode($some_string);
$some_string = preg_replace("/\t/", " ", $some_string);
$some_string = preg_replace("/\n/", ' ', $some_string);
$some_string = str_replace("\n", ' ', $some_string);
$some_string = str_replace ('\n','', $some_string);3、json_last_error()输出4,Syntax error, malformed JSON
立即学习“PHP免费学习笔记(深入)”;
4、直接输出字符串,浏览器能够正常解析josn,如下截图

解决办法:
在线商城系统(完整无错修复版) v2.2无功能屏蔽,包括完整的前后台。系统是易于修改的、完全免费的网络商城系统。该系统界面简洁,有专业人士开发,属于较成熟的Asp商城系统。 该套网上商城系统从今日起正式免费完整开源发布,并不断升级其功能。允许个人按照自己的意愿修改和配置。 我们今后还会定期的进行升级和修改。遇到问题请到官方及时提交,我们会在每月固定式时间段,根据您发布的BUG进行统一纠正修改。
0
因为你的字符串不是标准的JSON字符串, 标准的JSON字符串每个string类型都要用"引起了
测试代码
<?php
$jsonStr1 = '{status: {RetCode:0, msg: "success"}, data: {}}';
var_dump(json_decode($jsonStr1, true));
var_dump(json_last_error());
echo "--------分割线--------".PHP_EOL;
$jsonStr2 = '{"status": {"RetCode":0, "msg": "success"}, "data": {}}';
var_dump(json_decode($jsonStr2, true));结果
NULL
int(4)
--------分割线--------
array(2) {
["status"]=>
array(2) {
["RetCode"]=>
int(0)
["msg"]=>
string(7) "success"
}
["data"]=>
array(0) {
}
}============== 更新 ==============
经过调试,发现是 BOM 引起的,下面是解决方案
$dataString = $merchant_arr['data'];
$A = substr($dataString, 0, 1);
$B = substr($dataString, 1, 1);
$C = substr($dataString, 2, 1);
if ((ord($A) == 239) && (ord($B) == 187) && (ord($C) == 191)) {
$dataString = substr($dataString, 3);
}
$dataArray = json_decode($dataString, true);推荐学习:《PHP7教程》
以上就是遇到一个关于php7 json_decode null问题!的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号