Rumah > pembangunan bahagian belakang > tutorial php > Mengapa PHP DOMDocument::loadHTML() saya tidak mengendalikan UTF-8 dengan betul?

Mengapa PHP DOMDocument::loadHTML() saya tidak mengendalikan UTF-8 dengan betul?

Barbara Streisand
Lepaskan: 2024-12-25 12:12:14
asal
983 orang telah melayarinya

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

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:

  • Sediakan pengisytiharan pengekodan XML: Tambah pengisytiharan ke permulaan rentetan.
  • Gunakan pengisytiharan meta charset: Tambah tag pada bahagian dokumen.
  • Gunakan pustaka SmartDOMDocument: Pustaka ini menyelesaikan masalah dengan menukar rentetan kepada entiti HTML sebelum memuatkannya ke DOMDocument.
  • Gunakan fungsi mb_encode_numericentity(): Fungsi ini menukar aksara UTF-8 kepada HTMLnya entiti yang setara, yang DOMDocument kemudiannya boleh menghuraikan dengan betul.

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();
Salin selepas log masuk

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan