PHP DOMDocument 遇到 UTF-8 编码问题 (☆)
PHP 的 DOMDocument 处理 UTF-8 字符遇到困难?您的网络服务器、文件和设置可能配置为 UTF-8,但 DOMDocument 仍然有问题。我们将探讨该问题并提供解决方案以确保正确的 UTF-8 解释。
问题的根源:
DOMDocument::loadHTML() 需要 HTML字符串,通常根据 HTML 规范以 ISO-8859-1 进行编码。但是,UTF-8 编码的字符串(例如您的字符串)与此期望不兼容。
解决方案 1:转换为 HTML 实体
要解决此不兼容性,请转换所有超过 Unicode 值 127 (h7F) 的字符都转为 HTML 实体。具有 HTML-ENTITIES 目标编码的 mb_convert_encoding 函数可以完成此任务:
<code class="php">$us_ascii = mb_convert_encoding($utf_8, 'HTML-ENTITIES', 'UTF-8');</code>
解决方案 2:添加 HTML 元标记
或者,您可以提示通过添加 进行编码指定字符集的标签:
<code class="php">$dom = new DomDocument(); $dom->loadHTML('<meta http-equiv="content-type" content="text/html; charset=utf-8">'.$html);</code>
此标签自动放置在
中。部分,遵循 HTML 2.0 规范。确保准确编码
最后,验证您的输入字符串是否真正以 UTF-8 编码。某些输入中可能存在混合编码,从而使转换过程变得复杂。根据需要使用正则表达式执行目标字符串替换。
以上是为什么 PHP 的 DOMDocument 无法处理 UTF-8 字符?的详细内容。更多信息请关注PHP中文网其他相关文章!