将dom元素的一部分转换为其中包含html标记的字符串

时间:2010-12-25 14:23:44

标签: php html dom

我需要将部分DOM元素转换为带有html标记的字符串。

我试过跟随,但它只打印一个没有标签的文本。

$dom = new DOMDocument();
$dom->loadHTMLFile('http://www.pixmania-pro.co.uk/gb/uk/08920684/art/packard-bell/easynote-tm89-gu-015uk.html');
$xpath = new DOMXPath($dom);
$elements=xpath->query('//table');

foreach($elements as $element)
echo $element->nodeValue;

我想要所有标签和表格内的内容。有人能帮我吗。这将是一个很大的帮助。

感谢。

2 个答案:

答案 0 :(得分:51)

Current solution

foreach($elements as $element){
    echo $dom->saveHTML($element);
}

旧答案(php< 5.3.6):

  1. 创建DomDocument的新实例
  2. 要保存为HTML的克隆节点(包含所有子节点)
  3. 将克隆节点导入到DomDocument的新实例并将其作为子项追加
  4. 将新实例另存为html
  5. 这样的事情:

    foreach($elements as $element){
        $newdoc = new DOMDocument();
        $cloned = $element->cloneNode(TRUE);
        $newdoc->appendChild($newdoc->importNode($cloned,TRUE));
        echo $newdoc->saveHTML();
    }
    

答案 1 :(得分:25)

使用php 5.3.6或更高版本,您可以使用DOMDocument::saveHTML中的节点:

foreach($elements as $element){
    echo $dom->saveHTML($element);
}