我正在解析 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);
在输出中,不会有 doctype、html 或 body 标签。资源
在阅读了数百个链接后自己得到了它。希望它也能帮助其他人......
return preg_replace('/^<!DOCTYPE.+?>/', '', str_replace( array('<html>', '</html>', '<body>', '</body>'), array('', '', '', ''), $objDOM->saveHTML()));