在使用DOMDocument::saveHTML()函数时,经常会遇到它自动关闭打开的HTML元素的问题。为了避免这个问题,可以使用DOMDocument::saveXML()函数来保存HTML代码。下面是一个解决方法的代码示例:
$dom = new DOMDocument();
$dom->loadHTML('Hello world
', LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
// 处理DOM树...
// 保存HTML代码到文件
$html = $dom->saveXML();
file_put_contents('output.html', $html);
在上面的示例中,我们首先创建一个DOMDocument对象,并使用loadHTML()函数加载HTML代码。我们使用LIBXML_HTML_NOIMPLIED和LIBXML_HTML_NODEFDTD选项来防止DOMDocument自动关闭打开的HTML元素。
然后,我们在代码中进行DOM树的处理,可以添加、修改或删除元素等操作。
最后,我们使用saveXML()函数将DOM树转换为字符串,并将其保存到文件中。这样做可以确保DOMDocument不会自动关闭打开的HTML元素。
请注意,saveXML()函数将返回整个DOM树的XML表示形式,包括根元素。如果只需要保存某个子元素的HTML代码,可以在保存之前使用DOMDocument::saveHTML()函数将该子元素转换为HTML字符串。
使用上述方法,我们可以避免使用DOMDocument::saveHTML()函数自动关闭打开的HTML元素的问题。