首頁 >後端開發 >php教程 >如何在不遺失區塊級元素的情況下從 DOMDocument 儲存 HTML?

如何在不遺失區塊級元素的情況下從 DOMDocument 儲存 HTML?

Patricia Arquette
Patricia Arquette原創
2024-12-18 10:11:17830瀏覽

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

如何在不省略區塊級元素的情況下保存DOMDocument 的HTML

嘗試將DOMDocument 的內容儲存為HTML 時會出現此問題不包括預設的HTML、body 和p 標籤包裝器。建議使用 saveXML($d->getElementsByTagName('p')->item(0)) 的解決方案僅在內容缺少區塊級元素時起作用。

問題原始方法

如果存在區塊級元素,例如 h1 標籤,則 saveXML 的輸出為被截斷,只留下 p 標籤內的文字。

更新的方法

要解決此問題,您可以使用 PHP 中引入的 loadHTML 函數的更新版本5.4 和 Libxml 2.6。此函數包含一個 $options 參數,可讓您指定如何解析內容。透過設定以下選項:

$html->loadHTML($content, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);

解釋選項

  • LIBXML_HTML_NOIMPLIED 禁用自動新增隱含的 html/body 元素。
  • LIBXML_HTML_NODEFDTD 防止在新增預設文件類型時新增預設文件類型找不到。

當您隨後執行 saveHTML() 時,輸出將不包含 doctype、html 標籤或 body 標籤。這種方法確保區塊級元素保留在輸出中。

注意:

  • Libxml 2.6 文件指出需要 Libxml 2.6,但 LIBXML_HTML_NODEFDTD Libxml 2.7.7 中可用。

以上是如何在不遺失區塊級元素的情況下從 DOMDocument 儲存 HTML?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn