You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP调用json_decode返回NULL,因JSON元素含特殊转义符如何解决?

问题原因

json_decode返回NULL的核心原因如下:

  1. 标准JSON规范仅支持\u开头的Unicode转义序列,你当前使用的JSON字符串中包含\x3c、\x3e这类十六进制转义符,不符合JSON规范,直接触发解析失败。
  2. 你此前使用stripslashes仅处理了转义双引号的问题,没有解决十六进制转义符的核心异常,所以依然无法正常解析。

解决方案

先通过正则替换把字符串内的十六进制转义符转换为对应实体字符,再执行JSON解析即可,可参考如下代码:

<?php
    $result = '{ "nid": 4872, "price": "£35.36", "salePrice": "£35.36", "discount": 0, "message": "\x3cdiv class=\"ajax-cart-status\"\x3eThe current price has been updated.\x3c/div\x3e" }';
    
    // 处理\x开头的十六进制转义符
    $result = preg_replace_callback('/\\\\x([0-9a-fA-F]{2})/', function($matches) {
        return chr(hexdec($matches[1]));
    }, $result);

    $arr1 = json_decode($result, true);
    $arr2 = ['text' => 'text2'];
    $arr1 = array_merge($arr1,$arr2);
    
    echo json_encode($arr1);
?>

内容的提问来源于stack exchange,提问作者User-15895

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 03:57:03