此問題解決了使用DOMDocument 時的一個常見問題:提取HTML 內容而不包含HTML、正文和段落標記。當 saveXML() 將這些包裝器附加到輸出時,就會出現問題。雖然建議的在第一個段落元素上使用 saveXML() 的修復方法僅適用於沒有區塊級元素的內容,但本文探討了一個全面的解決方案。
解決此問題的關鍵在於 $option 的引入PHP 5.4 和 Libxml 2.6 中 loadHTML() 中的參數。透過使用以下選項:
$html->loadHTML($content, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
我們可以指示 Libxml 不要自動新增隱含的 HTML 和 body 元素或預設的 doctype。因此,saveHTML() 將輸出沒有這些包裝器的內容。
LIBXML_HTML_NOIMPLIED 會關閉隱含 HTML/body 元素的自動添加,而 LIBXML_HTML_NODEFDTD 會在輸入中找不到預設文件類型時阻止新增預設文件類型。
透過合併這些選項,我們可以有效地提取所需的 HTML 內容,而無需不需要的包裝器,從而確保更準確地表示DOMDocument 的內容。
需要注意的是,loadHTML() 需要 Libxml 2.6,而 LIBXML_HTML_NODEFDTD 僅在 Libxml 2.7.8 中可用,LIBXML_HTML_NOIMPLIED 在 Libxml 2.7.7 中可用。想要全面了解Libxml參數,請參考官方文件。
以上是如何在沒有包裝標籤的情況下從 DOMDocument 儲存 HTML?的詳細內容。更多資訊請關注PHP中文網其他相關文章!