首页 > 后端开发 > php教程 > 如何在不丢失块级元素的情况下从 DOMDocument 保存 HTML?

如何在不丢失块级元素的情况下从 DOMDocument 保存 HTML?

Patricia Arquette
发布: 2024-12-18 10:11:17
原创
826 人浏览过

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.8.
  • LIBXML_HTML_NOIMPLIED 在 Libxml 2.7.7 中可用。

以上是如何在不丢失块级元素的情况下从 DOMDocument 保存 HTML?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板