我只想将未编码的字符转换为 html 实体,而不影响已经存在的实体。我有一个字符串,其中包含以前编码的实体,例如:
gaIUSHIUGhj>‐ hjb×jkn.jhuh>hh> …
当我使用 htmlentities()
时,实体开头的 &
再次被编码。这意味着 ‐
和其他实体将它们的 &
编码为 &
:
×
我尝试解码完整的字符串,然后再次编码,但似乎无法正常工作。这是我试过的代码:
header('Content-Type: text/html; charset=iso-8859-1');
...
$b = 'gaIUSHIUGhj>‐ hjb×jkn.jhuh>hh> …';
$b = html_entity_decode($b, ENT_QUOTES, 'UTF-8');
$b = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $b);
$b = htmlentities($b, ENT_QUOTES, 'UTF-8');
但它似乎并没有以正确的方式工作。有没有办法防止或阻止这种情况的发生?
最佳答案
将可选的 $double_encode
变量设置为 false
。查看documentation获取更多信息。
您的结果代码应如下所示:
$b = htmlentities($b, ENT_QUOTES, 'UTF-8', false);
关于php - htmlentities() 双重编码字符串中的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15306819/