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

当JSON包含HTML实体时json_decode返回NULL该如何处理

问题根因

json_decode 只能解析语法合规的标准JSON字符串,你提供的字符串中双引号、尖括号等符号都被转义为了HTML实体(比如"对应双引号、<对应小于号),不符合JSON语法要求,因此解析失败返回NULL。
你可以调用json_last_error_msg()查看具体错误,该场景下一般会返回 Syntax error。

解决步骤
  • 第一步:用html_entity_decode函数将HTML实体还原为原始字符,得到标准JSON字符串
  • 第二步:对还原后的字符串调用json_decode完成解析
  • 可选:如果业务需要保留内容中的HTML实体编码,解析完成后可单独对目标字段调用htmlspecialchars处理
正确代码示例
$json = '{
       "text": "<ul>
<li><strong>'"Example Text"'</strong></li>"
}';

// 解码HTML实体,ENT_QUOTES表示同时解码单/双引号实体,指定UTF-8编码避免乱码
$standardJson = html_entity_decode($json, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
$data = json_decode($standardJson, true);
var_dump($data);
注意事项
  • 必须传入ENT_QUOTES参数,否则JSON结构里的双引号实体不会被还原,仍然会报语法错误
  • 显式指定UTF-8编码,避免包含非ASCII字符时出现乱码导致解析失败

内容的提问来源于stack exchange,提问作者gidiwe2427

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 12:09:03