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
888 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!

sumber:php.cn
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