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

Mengapa LoadHTML PHP DOMDocument Gagal dengan Pengekodan UTF-8 dan Bagaimana Saya Boleh Membetulkannya?

Barbara Streisand
Lepaskan: 2024-12-30 16:48:09
asal
885 orang telah melayarinya

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

PHP DOMDocument loadHTML Tidak Dapat Mengekod UTF-8 Dengan Betul

Kaedah DOMDocument loadHTML menganggap input anda dikodkan dalam ISO-8859-1, yang boleh membawa kepada pengekodan UTF-8 yang salah aksara.

Penghurai asas yang digunakan oleh DOMDocument menjangkakan input HTML4, yang berpotensi menyebabkan cabaran dengan dokumen HTML5.

Penyelesaian:

Untuk menyelesaikan isu ini, nyatakan pengekodan aksara HTML anda menggunakan salah satu daripada yang berikut kaedah:

Pengisytiharan Pengekodan XML:

ContentType Header:

Awalan Pengekodan XML:

Penyelesaian untuk HTML Tidak Diketahui Kandungan:

Jika anda tidak boleh membuat andaian tentang pengekodan, gunakan penyelesaian seperti SmartDOMDocument atau kod PHP berikut:

$profile = '<p>イリノイ州シカゴにて、アイルランド系の家庭に、9</p>';
$dom = new DOMDocument();
$dom->loadHTML(mb_convert_encoding($profile, 'HTML-ENTITIES', 'UTF-8'));
echo $dom->saveHTML();</p>
<p><strong>Awas untuk PHP 8.2 :</strong></p>
<p>Dalam PHP 8.2 , fungsi mb_convert_encoding akan menjana penamatan amaran. Sebagai alternatif:</p>
<pre class="brush:php;toolbar:false">$dom->loadHTML(mb_encode_numericentity($profile, [0x80, 0x10FFFF, 0, ~0], 'UTF-8'));
Salin selepas log masuk

Walaupun tidak sesuai, kaedah ini memastikan pengekodan selamat kerana semua aksara boleh diwakili dalam ISO-8859-1.

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