此问题解决了使用 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中文网其他相关文章!