Найти и распечатать первый div в документе HTML

0

Я пытаюсь найти первый элемент div на удаленной странице, но с трудом. Вот что я имею до сих пор:

$url = "http://feed2all.eu/watch/193916/1/watch-skysports.html";
$html = file_get_contents($url);
$doc = new DOMDocument(); // create DOMDocument
libxml_use_internal_errors(true);

$doc->validateOnParse = true;
$doc->preserveWhiteSpace = false;
$doc->loadHTML($html); // load HTML you can add $html

$xpath = new DOMXpath($doc);
$nodes = $xpath->query( "//div");
foreach( $nodes as $node) {
    echo $node;
}

Я также пытался использовать:

$divs = $doc->getElementsByTagName('div');
foreach ($divs as $div) {
    echo $div;
}

Изменение: как эхо внутреннее html полученного div

             $xpath = new DOMXpath($doc);
             $div = $xpath->query("//div[1]")->item(0);
             function get_inner_html( $div ) {
             $innerHTML= '';
             $children = $div->childNodes;
             foreach ($children as $child) {
             $innerHTML .= $child->ownerDocument->saveXML( $child );
              }
             echo $innerHTML;
              }

он дает пустую страницу

  • 0
    Вам нужно вызвать функцию: get_inner_html($div);
  • 0
    @hek2mgl hek2mgl, пожалуйста, обновите свой ответ соответственно с полным кодом.
Теги:
dom
domdocument
domxpath

1 ответ

1
Лучший ответ

Если вы хотите, чтобы первый div использовал:

$div = $xpath->query("//div[1]")->item(0);

Также вы не можете использовать echo для печати DOMElement. Вы можете напечатать это значение:

echo $div->nodeValue;

или он атрибуты:

echo $div->getAttribute('foo');

В комментариях вы попросили способ получить innerHTML div. Вот пример того, как получить HTML-код первого тега this сайта:

$url = 'http://stackoverflow.com/questions/20600265/find-print-the-first-div-in-an-html-document?noredirect=1#comment30824495_20600265';

$doc = new DOMDocument();
@$doc->loadHTML(file_get_contents($url));
$selector = new DOMXPath($doc);

$div = $selector->query('//div[1]')->item(0);
var_dump($doc->saveHTML($div));
  • 0
    тогда как я могу повторить исходный код Div я получил?
  • 0
    Проверьте это php.net/manual/de/class.domelement.php#101243
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню