PHP DOM получить nodevalue html? (без зачистки меток)

Я пытаюсь получить innerhtml тегов div в файле с помощью nodeValue, однако этот код выводит только обычный текст и, кажется, лишает весь тег html внутри div. Как я могу изменить этот код для вывода HTML-содержимого div, а не обычного текста, а также вывести основную div-упаковку дочерними элементами.

Пример:

содержимое файла file.txt:

<div class="1"><span class="test">text text text</span></div> <div class="2"><span class="test">text text text</span></div> <div class="3"><span class="test">text text text</span></div> 

script.php:

  $file= file_get_contents('file.txt'); $doc = new DOMDocument(); @$doc->loadHTML('<?xml encoding="UTF-8">'.$file); $entries = $doc->getElementsByTagName('div'); for ($i=0;$i<$entries->length;$i++) { $entry = $entries->item($i); echo $entry->nodeValue; } 

выходы: текст текст текст текст текст текст текст текст

что мне нужно для вывода:

 <div class="1"><span class="test">text text text</span></div> <div class="2"><span class="test">text text text</span></div> <div class="3"><span class="test">text text text</span></div> 

Обратите внимание, что родительский div (..etc) необходим для вывода, а также обертывания тегов span …

ПОМОГИТЕ!

Я никогда не делал то, что вы пытаетесь сделать, но как удар в темноте, используя документы API, делает echo $ entry-> textContent; Работа?

Добавление обновления. Это из комментариев, размещенных на странице docs для DOMNode :

Здравствуй!

Объединяя все комментарии, самый простой способ получить внутренний HTML узла – использовать эту функцию:

 <?php function get_inner_html( $node ) { $innerHTML= ''; $children = $node->childNodes; foreach ($children as $child) { $innerHTML .= $child->ownerDocument->saveXML( $child ); } return $innerHTML; } ?> 

Или, может быть, более простой способ:

 echo $domDocument->saveXML($entry); 

Вместо:

 echo $entry->nodeValue; 

Вы должны использовать:

 echo $doc->saveXML($entry); 

Вот более полный пример самого себя, который мог бы помочь и другим, $doccontent – это блок HTML как строка:

 $doccontent = '<html> …'; // your html string $dom = new DOMDocument; $internalErrors = libxml_use_internal_errors(true); // prevent error messages $content_utf = mb_convert_encoding($doccontent, 'HTML-ENTITIES', 'UTF-8'); // correct parsing of utf-8 chars $dom->loadHTML($content_utf); libxml_use_internal_errors($internalErrors); // prevent error messages $specialdiv = $dom->getElementById('xdiv'); if(isset($specialdiv)) { echo $dom->saveXML($specialdiv); }