Die PHP-DOMDocument-Dokumentation legt nahe, dass die UTF-8-Kodierung standardmäßig unterstützt wird. Wie das bereitgestellte Codebeispiel zeigt, ist dies jedoch nicht immer der Fall der Fall. Das Problem entsteht, weil DOMDocument::loadHTML() einen HTML-String in einer bestimmten Codierung erwartet, die traditionell ISO-8859-1 (Latin-1) ist.
Um dieses Problem zu beheben, müssen wir die Zeichenfolge in eine Codierung konvertieren, die DOMDocument verarbeiten kann. Eine Möglichkeit besteht darin, Nicht-ASCII-Zeichen in HTML-Entitäten umzuwandeln und diese effektiv zu maskieren. Dies kann mithilfe der Funktion mb_convert_encoding() mit der Zielkodierung „HTML-ENTITIES“ erreicht werden.
Ein anderer Ansatz besteht darin, auf die Kodierung des Dokuments hinzuweisen durch Hinzufügen eines -Tag an den Anfang der HTML-Zeichenfolge einfügen. Dieses Tag gibt den Zeichensatz an, in diesem Fall UTF-8:
<meta http-equiv="content-type" content="text/html; charset=utf-8">
Dieses Meta-Tag wird automatisch in das Feld
eingefügt. Abschnitt des Dokuments, um sicherzustellen, dass das DOMDocument die Codierung richtig erkennt.Hier ist ein Beispiel, das die Verwendung von HTML-Entitäten demonstriert:
$html = '<meta http-equiv="content-type" content="text/html; charset=utf-8">
<html><head><title>Test!</title></head><body><h1>☆ Hello ☆ World ☆</h1></body></html>';
$dom = new DOMDocument('1.0', 'utf-8');
$dom->loadHTML($html);
header('Content-Type: text/html; charset=utf-8');
echo($dom->saveHTML());
Durch using Mit beiden Methoden können wir sicherstellen, dass das DOMDocument die UTF-8-Zeichen korrekt verarbeiten kann, sodass das Programm das gewünschte Ergebnis ausgeben kann:
<meta http-equiv="content-type" content="text/html; charset=utf-8">Test! ☆ Hello ☆ World ☆
Das obige ist der detaillierte Inhalt vonWarum hat DOMDocument beim Laden von HTML-Strings in PHP Probleme mit der UTF-8-Codierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!