как обращаться с DOM в PHP - PullRequest
       32

как обращаться с DOM в PHP

2 голосов
/ 07 апреля 2010

Мой код PHP

$dom = new DOMDocument();
@$dom->loadHTML($file);

$xpath = new DOMXPath($dom);
$tags = $xpath->query('//div[@class="text"]');

foreach ($tags as $tag) {
    echo $tag->textContent;
}

То, что я пытаюсь сделать здесь, - это получить содержимое div, у которого есть класс 'text', но проблема, когда я зацикливаюсь и отображаю результаты, я получаю только текст, я не могу получить HTML-код с изображениями и все HTML-теги, такие как p, br, img ... и т. д. я пытался использовать $tag->nodeValue;, но также ничего не получалось.

Ответы [ 3 ]

2 голосов
/ 07 апреля 2010

Что вам нужно сделать, это создать временный документ, добавить элемент к нему и затем использовать saveHTML():

foreach ($tags as $tag) {
  $doc = new DOMDocument;
  $doc->appendChild($doc->importNode($tag, true));
  $html = $doc->saveHTML();
} 
2 голосов
/ 07 апреля 2010

Лично мне нравится Простой HTML Dom Parser .

include "lib.simple_html_dom.php"

$html = str_get_html($file);
foreach($html->find('div.text') as $e){
  echo $e->innertext;
}

Довольно просто, а? Он поддерживает селекторы, такие как jQuery:)

1 голос
/ 07 апреля 2010

Я нашел этот фрагмент в http://www.php.net/manual/en/class.domelement.php:

<?php
function getInnerHTML($Node)
{
     $Body = $Node->ownerDocument->documentElement->firstChild->firstChild;
     $Document = new DOMDocument();    
     $Document->appendChild($Document->importNode($Body,true));
     return $Document->saveHTML();
}
?>

Не уверен, работает ли он, хотя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...