Преобразовать часть элемента dom в строку с тегами html внутри них

im необходимо преобразовать часть элемента 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;

Я хочу, чтобы все теги были как есть, и содержимое внутри таблиц. Кто-нибудь может мне помочь. это будет приветливая помощь.

спасибо.

Ответ 1

Текущее решение:

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

Старый ответ (php <5.3.6):

  1. Создать новый экземпляр DomDocument
  2. Узел клонирования (со всеми подузлами), который вы хотите сохранить как HTML
  3. Импортируйте клонированный узел в новый экземпляр DomDocument и добавьте его как дочерний
  4. Сохранить новый экземпляр как HTML

Так что-то вроде этого:

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

Ответ 2

С php 5.3.6 или выше вы можете использовать node в DOMDocument:: saveHTML:

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