Cara Menyimpan HTML DOMDocument Tanpa Meninggalkan Elemen Tahap Blok
Isu timbul apabila cuba menyimpan kandungan DOMDocument sebagai HTML tanpa menyertakan pembalut teg HTML, badan dan p lalai. Penyelesaian yang dicadangkan untuk menggunakan saveXML($d->getElementsByTagName('p')->item(0)) hanya berfungsi apabila kandungan tidak mempunyai elemen peringkat blok.
Masalah dengan Pendekatan Asal
Dalam kes di mana elemen peringkat blok hadir, seperti tag h1, output daripada saveXML dipotong, hanya meninggalkan teks dalam teg p.
Pendekatan Dikemas Kini
Untuk menyelesaikan isu ini, anda boleh menggunakan versi terkini fungsi loadHTML yang diperkenalkan dalam PHP 5.4 dan Libxml 2.6. Fungsi ini termasuk parameter $options yang membolehkan anda menentukan cara kandungan harus dihuraikan. Dengan menetapkan pilihan berikut:
$html->loadHTML($content, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
Menjelaskan Pilihan
Apabila anda kemudiannya melakukan saveHTML(), output tidak akan mengandungi doctype, teg html atau teg badan. Pendekatan ini memastikan elemen peringkat blok dikekalkan dalam output.
Nota:
Atas ialah kandungan terperinci Bagaimana untuk Menyimpan HTML daripada DOMDocument Tanpa Kehilangan Elemen Tahap Blok?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!