来自 DOMDocument 的 nodeValue 在 PHP 中返回奇怪的字符

Eli*_*lie 2 php character-encoding domdocument nodevalue

所以我试图解析 HTML 页面并<p>使用get_elements_by_tag_name('p');

问题是当我使用时$element->nodeValue,它返回奇怪的字符。文档首先$html使用 curl 加载,然后将其加载到 DOMDocument 中。

我确定这与字符集有关。

这是一个响应示例:“aujourd’hui”。

提前致谢。

小智 7

我遇到了同样的问题,现在注意到 loadHTML() 不再需要 2 个参数,所以我不得不找到一个不同的解决方案。在我的 DOM 库中使用以下函数,我能够从我的 HTML 内容中删除时髦的字符。

private static function load_html($html)
{
    $doc = new DOMDocument;
    $doc->loadHTML('<?xml encoding="UTF-8">' . $html);

    foreach ($doc->childNodes as $node)
        if ($node->nodeType == XML_PI_NODE)
            $doc->removeChild($node);

    $doc->encoding = 'UTF-8';

    return $doc;
}
Run Code Online (Sandbox Code Playgroud)