PHP DOMDocument saveHTML 未正确编码西里尔字母
PHP DOMDocument saveHTML not encoding cyrillic correctly
我使用 DOMDocument
来操纵 html 和 php 7. 问题是文本在页面上显示良好(西里尔文),但是当我去"See HTML page source",不好。它显示如下:
Здесь осн
可能出了什么问题? <meta>
字符集是 utf-8。我的代码:
$dom = new DOMDocument();
if (@$dom->loadHTML(mb_convert_encoding("<div>$body</div>", 'HTML-ENTITIES', 'UTF-8'), LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD)) {
//
$container = $dom->getElementsByTagName('div')->item(0);
$container = $container->parentNode->removeChild($container);
while ($dom->firstChild)
$dom->removeChild($doc->firstChild);
while ($container->firstChild )
$dom->appendChild($container->firstChild);
$xpath = new DOMXPath($dom);
$headlines = $xpath->query("//h2");
// some code..
return $dom->saveHTML();
}
问题出在$dom->saveHTML();
,你需要添加根节点作为参数,像这样:
return $dom->saveHTML((new \DOMXPath($dom))->query('/')->item(0));
它突然以不同的方式呈现页面,并进行了替换。如果没有,请仔细检查 $dom->encoding
和 $dom->substituteEntities
的值,它们应该显示为 UTF-8
和 TRUE
。
我使用 DOMDocument
来操纵 html 和 php 7. 问题是文本在页面上显示良好(西里尔文),但是当我去"See HTML page source",不好。它显示如下:
Здесь осн
可能出了什么问题? <meta>
字符集是 utf-8。我的代码:
$dom = new DOMDocument();
if (@$dom->loadHTML(mb_convert_encoding("<div>$body</div>", 'HTML-ENTITIES', 'UTF-8'), LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD)) {
//
$container = $dom->getElementsByTagName('div')->item(0);
$container = $container->parentNode->removeChild($container);
while ($dom->firstChild)
$dom->removeChild($doc->firstChild);
while ($container->firstChild )
$dom->appendChild($container->firstChild);
$xpath = new DOMXPath($dom);
$headlines = $xpath->query("//h2");
// some code..
return $dom->saveHTML();
}
问题出在$dom->saveHTML();
,你需要添加根节点作为参数,像这样:
return $dom->saveHTML((new \DOMXPath($dom))->query('/')->item(0));
它突然以不同的方式呈现页面,并进行了替换。如果没有,请仔细检查 $dom->encoding
和 $dom->substituteEntities
的值,它们应该显示为 UTF-8
和 TRUE
。