Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Menyimpan HTML daripada DOMDocument Tanpa Kehilangan Elemen Tahap Blok?

Bagaimana untuk Menyimpan HTML daripada DOMDocument Tanpa Kehilangan Elemen Tahap Blok?

Patricia Arquette
Lepaskan: 2024-12-18 10:11:17
asal
828 orang telah melayarinya

How to Save HTML from a DOMDocument Without Losing Block-Level Elements?

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);
Salin selepas log masuk

Menjelaskan Pilihan

  • LIBXML_HTML_NOIMPLIED melumpuhkan penambahan automatik unsur html/badan tersirat.
  • LIBXML_HTML_NODEFDTD menghalang jenis dokumen lalai daripada ditambahkan apabila satu tidak ditemui.

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:

  • Dokumentasi Libxml 2.6 menyatakan bahawa Libxml 2.6 diperlukan, tetapi LIBXML_HTML_NODEFDTD hanya tersedia dalam Libxml 2.7.8.
  • LIBXML_HTML_NOIMPLIED tersedia dalam Libxml 2.7.7.

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!

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