用奇怪的字符完成 HTML

Complete HTML with stange characters

我用这个功能来完成我的HTML。

function correct_html($string) {
    $dom = new \DOMDocument;
    $dom->loadHTML($string);

    $mock = new \DOMDocument;
    $body = $dom->getElementsByTagName('body')->item(0);
    foreach ($body->childNodes as $child) {
        $mock->appendChild($mock->importNode($child, true));
    }

    return trim($mock->saveHTML());
}

但是当我将此函数与 é 或任何其他特殊字符一起使用时,它会给我 É。我该如何解决这个问题

我认为您应该将编码添加到 DOMDocument 的构造中。

$dom = new DOMDocument('1.0', 'UTF-8');

还要确保在 headers 中设置了编码。

header("Content-Type: text/html; charset=UTF-8");

尝试添加

utf8_decode()

在将字符串解析到 loadHTML() 之前,像这样,

function correct_html($string) {
    $dom = new \DOMDocument();
    $dom->loadHTML(utf8_decode($string));

    $mock = new \DOMDocument;
    $body = $dom->getElementsByTagName('body')->item(0);
    foreach ($body->childNodes as $child) {
        $mock->appendChild($mock->importNode($child, true));
    }

    return trim($mock->saveHTML());
}