Rumah > pembangunan bahagian belakang > tutorial php > Mengapa PHP DOMDocument::loadHTML Gagal dengan Pengekodan UTF-8, dan Bagaimana Saya Boleh Membetulkannya?

Mengapa PHP DOMDocument::loadHTML Gagal dengan Pengekodan UTF-8, dan Bagaimana Saya Boleh Membetulkannya?

Linda Hamilton
Lepaskan: 2024-12-23 05:28:14
asal
627 orang telah melayarinya

Why Does PHP DOMDocument::loadHTML Fail with UTF-8 Encoding, and How Can I Fix It?

Gagal Mengekod UTF-8 dengan PHP DOMDocument::loadHTML

Dalam senario tertentu, cuba menghuraikan HTML menggunakan DOMDocument::loadHTML boleh mengakibatkan isu pengekodan, terutamanya apabila pengekodan UTF-8 terlibat. Artikel ini meneroka sebab di sebalik masalah ini dan menyediakan beberapa penyelesaian untuk menanganinya dengan berkesan.

Punca Isu

Secara lalai, DOMDocument memperlakukan rentetan sebagai dikodkan dalam ISO- 8859-1, iaitu set aksara lalai HTTP/1.1. Walau bagaimanapun, rentetan UTF-8 ditafsirkan secara salah di bawah andaian ini, yang membawa kepada ralat pengekodan.

Penyelesaian Alternatif

1. Mendahulukan Pengisytiharan Pengekodan

Untuk coretan HTML (X) yang mudah, tambahkan pengisytiharan XML atau meta charset untuk mengarahkan penghurai untuk menganggap rentetan sebagai UTF-8:

$contentType = '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">';
$dom->loadHTML($contentType . $profile);

$dom->loadHTML('<meta charset="utf8">' . $profile);
Salin selepas log masuk

2. Menggunakan HTML SmartDOMDocument

Penyelesaian ini boleh digunakan jika pengisytiharan pengekodan terdahulu tidak dapat ditentukan:

$dom->loadHTML(mb_convert_encoding($profile, 'HTML-ENTITIES', 'UTF-8'));
Salin selepas log masuk

3. Penyelesaian PHP 8.2

Untuk PHP 8.2 , gunakan pendekatan berikut:

$dom->loadHTML(mb_encode_numericentity($profile, [0x80, 0x10FFFF, 0, ~0], 'UTF-8'));
Salin selepas log masuk

Kesimpulan

Dengan memahami punca masalah pengekodan dan menggunakan penyelesaian yang sesuai, pembangun boleh menghuraikan HTML dengan pengekodan UTF-8 dengan berkesan menggunakan PHP Kaedah DOMDocument::loadHTML.

Atas ialah kandungan terperinci Mengapa PHP DOMDocument::loadHTML Gagal dengan Pengekodan UTF-8, dan Bagaimana Saya Boleh Membetulkannya?. 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