PHP DOMDocument loadHTML Tidak Mengekodkan UTF-8 Dengan Betul
Masalah:
Apabila menghuraikan HTML dengan DOMDocument::loadHTML() PHP, aksara UTF-8 tidak ditafsirkan dengan betul, membawa kepada output yang herot.
Punca:
DOMDocument menganggap rentetan input berada dalam pengekodan ISO-8859-1 secara lalai. Walau bagaimanapun, UTF-8 biasanya digunakan dalam HTML5. Apabila memuatkan rentetan UTF-8 tanpa menyatakan pengekodan, DOMDocument menyalahtafsirkannya.
Penyelesaian:
Untuk menangani isu ini, anda perlu menentukan pengekodan yang betul untuk input rentetan. Anda mempunyai beberapa pilihan:
Contoh:
Kod ini menunjukkan menggunakan fungsi mb_encode_numericentity():
$profile = '<p>イリノイ州シカゴにて、アイルランド系の家庭に</p>'; $dom = new DOMDocument(); $dom->loadHTML(mb_encode_numericentity($profile, [0x80, 0x10FFFF, 0, ~0], 'UTF-8')); echo $dom->saveHTML();
Dengan menggunakan teknik ini, anda boleh memastikan bahawa aksara UTF-8 dihuraikan dan dipaparkan dengan betul dalam PHP DOMDocument anda.
Atas ialah kandungan terperinci Mengapa PHP DOMDocument::loadHTML() saya tidak mengendalikan UTF-8 dengan betul?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!