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

4、直接输出字符串,浏览器能够正常解析josn,如下截图

php7中如何解决json_decode null的问题

解决办法:

因为你的字符串不是标准的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);

原创文章,作者:MUCWL,如若转载,请注明出处:http://www.wangzhanshi.com/n/9805.html

(0)
MUCWL的头像MUCWL
上一篇 2025年1月1日 16:51:49
下一篇 2025年1月1日 16:51:51

相关推荐

  • PHP使用WebDriver实现音频文件的自动下载与保存

    1. 背景介绍 音频娱乐在当今社会已经成为了人们日常生活中不可或缺的一部分。从早晨的音乐播放到晚上的电台节目,音频内容贯穿了我们的整个生活。随着互联网的普及和技术的进步,越来越多的…

    php 2024年12月17日
  • php7带来的性能升级有哪些

    主要研究问题: 1.PHP7带来的好处 2.PHP7带来的新东西 3.PHP7带来的废弃 4.PHP7带来的变更 5.如何充分发挥PHP7的性能 6。如何更好的写代码来迎接PHP7…

    php 2025年1月1日
  • 怎样安装php5

    php是什么 php是一个嵌套的缩写名称,是英文超级文本预处理语言,它的语法混合了C、Java、Perl以及php自创新的语法,主要用来做网站开发,许多小型网站都用php开发,因为…

    2025年1月2日
  • PHP5权威编程的示例分析

    PHP4中,不使用__construct()作为构造函数的名字,必须使用类的名字定义一个方法,就像在C++中一样。 PHP5中,使用新的统一的构造函数命名方式:__construc…

    php 2025年1月2日
  • PHP7+Nginx如何配置与安装

    系统环境:centos6.5 x64 软件版本:nginx-1.10.0 php-7.0.6 安装 Nginx Nginx官网:http://nginx.org/ 先安装编译依赖的…

    php 2025年1月1日
  • php7升级后报错怎么办?

    升级php后站点报错,提示如下: Deprecated: Automatically populating $HTTP_RAW_POST_DATA is deprecated an…

    php 2025年1月1日
  • Swoole 4.x服务器Server配置和函数列表

    简介 Swoole 是一个使用 C++ 语言编写的基于异步事件驱动和协程的并行网络通信引擎,为 PHP 提供协程、高性能网络编程支…

    php 2024年12月17日
  • PHP7安装扩展

    php安装参考 https://blog.51cto.com/11140372/2335911这里我基于该博客的环境安装扩展的1.zip sudo apt-get install …

    2025年1月1日
  • php7和php5的区别有哪些

    php7和php5的区别:1、php7移除了不再支持的SAPI;2、php7新增了空接合操作符;3、php7增加了结合比较运算符;4、php 7增加了函数的返回类型声明。 本文操作…

    php 2025年1月1日
  • PHP7原生MySQL数据库怎么操作

    php7中mysql的连接与使用与PHP5中大不相同 PHP5中mysql_connect()等函数大多被PHP7中类的成员函数所代替。PHP5中连接mysql是过程性的,而PHP…

    php 2025年1月1日

发表回复

登录后才能评论