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

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