删除文档类型,同时保存 domdocument
2022-08-30 22:38:15
我正在解析并将html文档提取到DOMDocument。这些文档是将显示在另一个页面中的子表单。在保存解析的 DOMDocuments 时,它会自动添加 doctype、html、head 和 body 标签。由于我正在研究子表单,因此我想删除所有这些内容,只保存表单的子标签。
如何在保存 domdocument 的同时跳过 html、head、body 和其他标签的自动生成?
我正在解析并将html文档提取到DOMDocument。这些文档是将显示在另一个页面中的子表单。在保存解析的 DOMDocuments 时,它会自动添加 doctype、html、head 和 body 标签。由于我正在研究子表单,因此我想删除所有这些内容,只保存表单的子标签。
如何在保存 domdocument 的同时跳过 html、head、body 和其他标签的自动生成?
与@KoolKabin答案相同,但更短一些:
return preg_replace('~<(?:!DOCTYPE|/?(?:html|body))[^>]*>\s*~i', '', $dom->saveHTML());
从 PHP 5.4 和 Libxml 2.6 开始,目前有更简单的方法:当你加载 html 时
$html->loadHTML($content, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
在输出中,不会有文档类型,html或正文标签。源