Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将部分dom元素转换为包含html标记的字符串_Php_Html_Dom - Fatal编程技术网

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

Php 将部分dom元素转换为包含html标记的字符串,php,html,dom,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->qu

我需要将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;
我想要所有的标签和表中的内容。谁能帮帮我吗。这将是一个很大的帮助

谢谢。

旧答案(php<5.3.6):

  • 创建DomDocument的新实例
  • 克隆要另存为HTML的节点(包含所有子节点)
  • 将克隆的节点导入DomDocument的新实例,并将其作为子节点追加
  • 将新实例另存为html
  • 比如说:

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

    使用php 5.3.6或更高版本,您可以在以下位置使用节点:


    哦,谢谢你,戴夫,这正是我需要的。这节省了很多时间。再次感谢您。tnx guy您真的很有用:请注意这里下面的dennis answer,用于更新的PHP版本。在我这边测试时,出现了“$cloned=$element->cloneNode(TRUE);”如果将$element项放在importNode方法中,而不是按原样放置“$cloned”项,则不需要行。
    foreach($elements as $element){
        $newdoc = new DOMDocument();
        $cloned = $element->cloneNode(TRUE);
        $newdoc->appendChild($newdoc->importNode($cloned,TRUE));
        echo $newdoc->saveHTML();
    }
    
    foreach($elements as $element){
        echo $dom->saveHTML($element);
    }