首页 >后端开发 >php教程 >如何在没有包装标签的情况下从 DOMDocument 保存 HTML?

如何在没有包装标签的情况下从 DOMDocument 保存 HTML?

Susan Sarandon
Susan Sarandon原创
2024-12-15 05:34:13637浏览

How Can I Save HTML from DOMDocument Without the Wrapper Tags?

在没有 HTML 包装器的情况下保存 DOMDocument 的 HTML

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn