преобразовать часть элемента dom в строку с тегами html внутри них - PullRequest
17 голосов
/ 25 декабря 2010

Я нуждаюсь в преобразовании части элемента 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 ]

51 голосов
/ 25 декабря 2010

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

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

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

  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();
}
25 голосов
/ 23 мая 2013

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

foreach($elements as $element){
    echo $dom->saveHTML($element);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...