Heim > Backend-Entwicklung > PHP-Tutorial > Warum verarbeitet mein PHP DOMDocument::loadHTML() UTF-8 nicht korrekt?

Warum verarbeitet mein PHP DOMDocument::loadHTML() UTF-8 nicht korrekt?

Barbara Streisand
Freigeben: 2024-12-25 12:12:14
Original
888 Leute haben es durchsucht

Why is my PHP DOMDocument::loadHTML() not handling UTF-8 correctly?

PHP DOMDocument loadHTML kodiert UTF-8 nicht korrekt

Problem:

Beim Parsen von HTML mit PHPs DOMDocument::loadHTML() werden UTF-8-Zeichen nicht richtig interpretiert, Dies führt zu einer verzerrten Ausgabe.

Ursache:

DOMDocument geht standardmäßig davon aus, dass die Eingabezeichenfolge in ISO-8859-1-Kodierung vorliegt. UTF-8 wird jedoch häufig in HTML5 verwendet. Beim Laden von UTF-8-Zeichenfolgen ohne Angabe der Kodierung interpretiert DOMDocument sie falsch.

Lösung:

Um dieses Problem zu beheben, müssen Sie die richtige Kodierung für die Eingabe angeben Zeichenfolge. Sie haben mehrere Möglichkeiten:

  • Eine XML-Codierungsdeklaration voranstellen:Ein hinzufügen. Deklaration am Anfang der Zeichenfolge.
  • Verwenden Sie eine Meta-Zeichensatzdeklaration: Fügen Sie eine Tag zum Abschnitt des Dokuments.
  • Verwenden Sie die SmartDOMDocument-Bibliothek: Diese Bibliothek umgeht das Problem, indem sie die Zeichenfolge in HTML-Entitäten konvertiert, bevor sie in DOMDocument geladen wird.
  • Verwenden Sie die Funktion mb_encode_numericentity(): Diese Funktion konvertiert UTF-8-Zeichen in ihre HTML-Entitätsäquivalente. welches DOMDocument dann korrekt analysieren kann.

Beispiel:

Dieser Code demonstriert die Verwendung der Funktion mb_encode_numericentity():

$profile = '<p>イリノイ州シカゴにて、アイルランド系の家庭に</p>';
$dom = new DOMDocument();
$dom->loadHTML(mb_encode_numericentity($profile, [0x80, 0x10FFFF, 0, ~0], 'UTF-8'));
echo $dom->saveHTML();
Nach dem Login kopieren

Von Mithilfe dieser Techniken können Sie sicherstellen, dass UTF-8-Zeichen in Ihrem PHP korrekt analysiert und angezeigt werden DOMDocument.

Das obige ist der detaillierte Inhalt vonWarum verarbeitet mein PHP DOMDocument::loadHTML() UTF-8 nicht korrekt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage