Pengenalan
DOMDocument, kelas PHP, menawarkan pendekatan yang mudah untuk menghurai dan memanipulasi dokumen HTML. Walau bagaimanapun, apabila cuba mengekalkan teg HTML semasa mengekstrak kandungan, pengguna mungkin menghadapi kesukaran. Artikel ini menyelidiki konsep asas DOM dan mencadangkan penyelesaian untuk menangani cabaran ini.
Memahami DOM dan Nod
DOMDocument mewakili dokumen HTML sebagai pepohon hierarki nod. Setiap nod boleh mempunyai nod anak, membentuk struktur yang kompleks. Adalah penting untuk menyedari bahawa elemen HTML, bersama dengan atribut dan kandungan teksnya, semuanya diwakili sebagai nod dalam DOMDocument.
Menyelesaikan Isu Pemeliharaan Tag
Yang disediakan kod berjaya mengambil nod DIV dengan id "showContent". Walau bagaimanapun, ia hanya mendapatkan semula kandungan teks dalam DIV, tidak termasuk teg HTML itu sendiri. Ini kerana kod menggunakan $tag->nodeValue, yang semata-mata mengekstrak teks dan bukannya nod sebenar.
Penyelesaian: Merentasi Nod
Untuk mengekalkan nod HTML, anda perlu melintasi nod anak nod sasaran anda. Kod di bawah mempamerkan pendekatan ini:
$dom = new DOMDocument(); @$dom->loadHTML($html); $xpath = new DOMXPath($dom); $tags = $xpath->query('.//div[@id="showContent"]'); foreach ($tags as $tag) { echo $dom->saveXML($tag); echo '<br>'; }
Mendapatkan Maklumat Khusus daripada HTML
Jika anda memerlukan maklumat khusus daripada dokumen HTML, seperti pautan daripada jadual, anda boleh mengubah suai pertanyaan XPath untuk memilih nod yang sesuai. Contohnya:
foreach ($div->getElementsByTagName('a') as $link) { echo $dom->saveXML($link); }
Sumber Tambahan
Untuk bantuan lanjut tentang bekerja dengan DOMDocument, rujuk sumber berikut:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengekalkan Tag HTML Apabila Mengekstrak Nod Menggunakan DOMDocument PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!