HTML实体解码无法解码ASCII字符

4
这是我的代码:
$string = '&#73&#116';
$string = html_entity_decode($string);
echo $string;

它应该输出 "It",但实际上只输出了ASCII码。我是否使用了错误的函数?我还尝试了htmlspecialchars_decode,但没有任何变化。
1个回答

9

这些实体无效 实际上,在HTML4(我猜HTML5也是如此)中它们是有效的,但在这种情况下,实体需要以分号结尾,PHP才能识别它们:

$string = 'It';

htmlspecialchars_decode() 仅解码 <, >, &, '"(最后两个取决于引号标志)。


我尝试过html_entity_decode($string, ENT_QUOTES, 'ISO-8859-1')和html_entity_decode($string, ENT_QUOTES),但都没有起作用。该字符串在我的页面上使用ISO-8859-1。我曾经使用$string = html_entity_decode($string, ENT_QUOTES, 'ISO-8859-1')。 - scarhand
@scarhand:你试过加分号了吗?这个方法对我有效。 - BoltClock
啊!抱歉Bolt,分号是个问题。我会使用分号来拆开和合并字符串。再次感谢! - scarhand
$string = preg_replace('/&#([0-9]+)/', '&#$1;', $string); =) $string = preg_replace('/&\#([0-9]+)/','&#$1;',$ string); =) - scarhand
@scarhand:是的,我更喜欢正则表达式的解决方案。 - BoltClock

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接