Php 将HTML实体转换为其适用的字符

Php 将HTML实体转换为其适用的字符,php,html,Php,Html,输出相同: $str = '<div style="text-align:center"><img src="http://image.gif" border="0">'; echo html_entity_decode($str,ENT_COMPAT, 'UTF-8'); 我期待着: <div style="text-align:center"><img src

输出相同:

$str = '<div style="text-align:center"><img src="http://image.gif" border="0">';

echo html_entity_decode($str,ENT_COMPAT, 'UTF-8');
我期待着:

<div style="text-align:center"><img src="http://image.gif" border="0">

尝试使用“htmlspecialchars\u decode()”而不是“html\u entity\u decode()”


这是双重编码,因此您需要解码两次
&
需要解码到
以获得

<div style="text-align:center"><img src="http://image.gif" border="0"></div>
如果正在进行编码,请查看
htmlspecialchars()
htmlentities()
$double\u encode
参数

如果多次编码,则可以使用:

echo html_entity_decode(html_entity_decode($str));

您需要解码两次,因为
&
需要解码到
&
才能获得
等。我使用的易趣API以这种格式返回所有描述,有时甚至双重解码也不会转换实体,有没有可靠的方法可以重复执行,直到所有实体都被转换?我使用的易趣API以这种格式返回所有描述,有时,即使双重解码也不能转换实体,有没有可靠的方法可以重复执行,直到所有实体都转换完毕?转换后的实体是:
&
(未设置ENT#NOQUOTES时)、
&
(设置ENT#QUOTES时)、
。使用和不使用
ENT#NOQUOTES
进行了尝试,结果仍然是一样的。我在我的测试环境中使用了上述方法进行了此操作。结果很好。
while(($str = html_entity_decode($str)) != $str) {}
echo $str;