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

html_entity_decode无效,如何将'转换为单引号?

问题分析与解决方案

1. 未指定正确的解码标志

html_entity_decode的默认(或你使用的ENT_COMPAT)标志仅解码双引号对应的HTML实体("),不会处理单引号的实体'。要解码单引号实体,必须指定ENT_QUOTES标志:

// 同时解码单引号、双引号对应的HTML实体
$var = html_entity_decode($var, ENT_QUOTES, 'UTF-8');

如果你的PHP版本≥5.4,可额外添加ENT_SUBSTITUTE标志,避免无效字符导致解码失败:

$var = html_entity_decode($var, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');

2. 内容被双重HTML编码

若上述方法仍无效,大概率是字符串被双重编码:原本的单引号先被转成',之后这个实体又被编码一次,变成'(这才是数据库中存储的实际值)。此时单次解码只能把&转成&,得到',需要连续解码两次:

// 处理二次编码的内容
$var = html_entity_decode(html_entity_decode($var, ENT_QUOTES, 'UTF-8'), ENT_QUOTES, 'UTF-8');

快速验证方法

先输出原始字符串的HTML源码,确认实际存储内容:

echo htmlspecialchars($var);

如果输出是',说明是双重编码问题;如果是',则是解码标志未设置正确。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 13:04:53