PHP DOMDocument loadHTML kann UTF-8 nicht korrekt kodieren
Die Methode „loadHTML“ von DOMDocument geht davon aus, dass Ihre Eingabe in ISO-8859-1 kodiert ist, was möglich ist führen zu einer falschen Codierung von UTF-8-Zeichen.
Die zugrunde liegende Der von DOMDocument verwendete Parser erwartet HTML4-Eingaben, was möglicherweise zu Problemen mit HTML5-Dokumenten führt.
Lösung:
Um dieses Problem zu beheben, geben Sie die Zeichenkodierung Ihres HTML-Codes mithilfe einer der folgenden Optionen an die folgenden Methoden:
XML-Kodierung Deklaration:
ContentType Header:
XML-Codierungspräfix:
Problemumgehung für unbekannten HTML-Inhalt:
Wenn Sie keine Annahmen darüber treffen können Verwenden Sie für die Codierung eine Problemumgehung wie SmartDOMDocument oder den folgenden PHP-Code:
$profile = '<p>イリノイ州シカゴにて、アイルランド系の家庭に、9</p>'; $dom = new DOMDocument(); $dom->loadHTML(mb_convert_encoding($profile, 'HTML-ENTITIES', 'UTF-8')); echo $dom->saveHTML();
Achtung für PHP 8.2:
In PHP 8.2 generiert die Funktion mb_convert_encoding eine veraltete Funktion Warnung. Als Alternative:
$dom->loadHTML(mb_encode_numericentity($profile, [0x80, 0x10FFFF, 0, ~0], 'UTF-8'));
Diese Methode ist zwar nicht ideal, gewährleistet aber eine sichere Kodierung, da alle Zeichen in ISO-8859-1 dargestellt werden können.
Das obige ist der detaillierte Inhalt vonWarum schlägt das LoadHTML von PHP DOMDocument bei der UTF-8-Kodierung fehl und wie kann ich das Problem beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!