用奇怪的字符完成 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());
}
我用这个功能来完成我的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());
}