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

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

Barbara Streisand
Freigeben: 2024-12-28 00:43:10
Original
179 Leute haben es durchsucht

Why is my PHP DOMDocument::loadHTML() Not Handling UTF-8 Encoding Correctly?

PHP DOMDocument loadHTML kodiert UTF-8 nicht korrekt

Beim Versuch, HTML mit DOMDocument::loadHTML() zu analysieren, können Probleme auftreten mit korrekter UTF-8-Kodierung. Standardmäßig behandelt DOMDocument Eingabezeichenfolgen als ISO-8859-1, was beim Umgang mit UTF-8-Daten zu Fehlern führen kann.

Lösung:

Um die Korrektheit sicherzustellen Bei der Kodierung können Sie verschiedene Methoden anwenden:

  • Kodierung voranstellen Deklarationen: Fügen Sie eine XML-Codierungsdeklaration oder eine HTML-Meta-Zeichensatzdeklaration hinzu, um das Vorhandensein von UTF-8-Zeichen anzuzeigen:

    $contentType = '<meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;>';
    $dom->loadHTML($contentType . $profile);
    Nach dem Login kopieren
  • Verwenden Sie SmartDOMDocument: Wenn der Eingabe-HTML möglicherweise bereits Deklarationen enthält, verwenden Sie die SmartDOMDocument-Bibliothek, um potenzielle Probleme zu lösen Konflikte:

    $dom->loadHTML(mb_convert_encoding($profile, 'HTML-ENTITIES', 'UTF-8'));
    Nach dem Login kopieren
  • Alternative: Verwenden Sie in PHP 8.2 mb_encode_numericentity() für eine sicherere Codierungsoption:

    $dom->loadHTML(mb_encode_numericentity($profile, [0x80, 0x10FFFF, 0, ~0], 'UTF-8'));
    Nach dem Login kopieren

HTML5 Überlegungen:

DOMDocument verwendet einen HTML4-Parser. Erwägen Sie für HTML5-Dokumente die Verwendung alternativer HTML-Parser, die für die HTML5-Konformität entwickelt wurden.

Beispiel:

Der folgende Code demonstriert die Verwendung von mb_convert_encoding() zur Korrektur falscher UTF-8 Kodierung:

$profile = "

イリノイ州シカゴにて、アイルランド系の家庭に、9人兄弟の5番目として

"; $dom = new DOMDocument(); $dom->loadHTML(mb_convert_encoding($profile, 'HTML-ENTITIES', 'UTF-8')); echo $dom->saveHTML();
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum verarbeitet mein PHP DOMDocument::loadHTML() die UTF-8-Codierung 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