PHP DOMDocument loadHTML 未正确编码 UTF-8
问题:
解析 HTML 时使用 PHP 的 DOMDocument::loadHTML(), UTF-8 字符无法正确解释,导致输出失真。
原因:
DOMDocument 默认情况下假定输入字符串采用 ISO-8859-1 编码。然而,HTML5 中普遍使用 UTF-8。当加载 UTF-8 字符串而不指定编码时,DOMDocument 会误解它们。
解决方案:
要解决此问题,您需要为输入指定正确的编码细绳。您有多种选择:
示例:
此代码演示如何使用 mb_encode_numericentity() 函数:
$profile = '<p>イリノイ州シカゴにて、アイルランド系の家庭に</p>'; $dom = new DOMDocument(); $dom->loadHTML(mb_encode_numericentity($profile, [0x80, 0x10FFFF, 0, ~0], 'UTF-8')); echo $dom->saveHTML();
通过使用这些技术,您可以确保在 PHP 中正确解析并显示 UTF-8 字符DOM文档。
以上是为什么我的 PHP DOMDocument::loadHTML() 无法正确处理 UTF-8?的详细内容。更多信息请关注PHP中文网其他相关文章!