Php 将DOMDocument中的特定元素导出为字符串

Php 将DOMDocument中的特定元素导出为字符串,php,html,domdocument,Php,Html,Domdocument,我正在使用loadHTML()函数将一些任意HTML导入DOMDocument,例如: $html = '<p><a href="test.php">Test</a></p>'; $doc = new DOMDocument; $doc->loadHTML($html); $html=''; $doc=新文档; $doc->loadHTML($html); 然后,我想使用DOMDocument方法更改一些属性/节点值,这样做没有问题 完成

我正在使用
loadHTML()
函数将一些任意HTML导入
DOMDocument
,例如:

$html = '<p><a href="test.php">Test</a></p>';
$doc = new DOMDocument;
$doc->loadHTML($html);
$html='

'; $doc=新文档; $doc->loadHTML($html);
然后,我想使用
DOMDocument
方法更改一些属性/节点值,这样做没有问题

完成这些更改后,我希望导出HTML字符串(使用
->saveHTML()
),而不使用
..
标记,
DOMDocument
会自动添加到HTML中

我理解为什么要添加这些标签(以确保文档有效),但我如何才能恢复编辑的HTML(基本上是
标签之间的所有内容)

我已经读过了,虽然它提供了一些解决方案,但我更愿意“正确地”这样做,即在
标记上不使用字符串替换。HTML的有效性不是问题,因为它是通过HTML净化器运行的

有什么想法吗?谢谢

编辑

我知道在PHP5.3.6中,
$node
参数添加到了
saveHTML()
,不幸的是,我被5.2卡住了。

也许这样做会有所帮助-他们使用正则表达式去除不必要的字符串:


$content=preg\u replace(数组(“/^\尝试使用DOMDocument->saveXML()



它输出

谢谢,但我不一定知道正文中第一个标记的类型,它需要是通用的


我没有看到“DOMDocument saveHTML without HTML wrapper?”尽管进行了搜索,但其中的一个答案将其排序(使用
loadXML()
,然后使用
saveHTML()
)。非常感谢指针:-)谢谢,但我不一定知道正文中第一个标记的类型,它需要是泛型的
$content = preg_replace(array("/^\<\!DOCTYPE.*?<html><body>/si",
                                  "!</body></html>$!si"),
                            "",
                            $this->saveHTML());

return $content;
<?php
$html = '<p><a href="test.php">Test</a></p>';
$doc = new DOMDocument();
$doc->loadHTML($html);
$domnodelist = $doc->getElementsByTagName('p');
$domnode = $domnodelist->item(0);
echo $doc->saveXML($domnode);
?>
$domnodelist = $doc->getElementsByTagName('*');
$domnode = $domnodelist->item(0);
echo $doc->saveXML($domnode);