Соц Сеть пишет:Добрый день ! никак не получается вытащить тег <p> из второго запроса , возвращает DOMNodeList Object ( [length] => 0 )
PHP:
скопировать код в буфер обмена
$html="<div class='_5pbx userContent _3576'> <div> <p id='pid'> <a href='/link3.php'>links</a> </p> </div> <div> <p id='pid'> <a href='/link.php'>links</a> </p> </div> </div>"; $doc=new DOMDocument(); $doc->loadHTML($html); $xpath=new DomXPath($doc); $topics_data=$xpath->query("//*[contains(@class, '_5pbx userContent _3576')]"); $p=$xpath->query("*[contains(@id, 'pid')]",$topics_data->item(0));
кто может подсказать в чем проблема ?
заранее спасибо.
Добрый день!
Честно говоря, у меня ещё до этого ругается на то, что одинаковый id в тегах <p>.
Попробуйте использовать simplexml_load_String вместо DomXPath
Вот что получается:
Спойлер (Отобразить)PHP:
скопировать код в буфер обмена
<?PHP $html="<div class='_5pbx userContent _3576'> <div> <p id='pid'> <a href='/link3.php'>links</a> </p> </div> <div> <p id='pid'> <a href='/link.php'>links</a> </p> </div> </div>"; if ($topics_data === false) { echo "Error!!!\n"; echo "\t", $error->message; } } else { foreach($topics_data->children() as $n) { foreach($n->children() as $n1) { echo "tag: <b>".$n1->getName()."</b><br>"; print "attribut: <b>". $n1->attributes()."</b><hr>"; $n2=$n1->children(); print "tag: <b>".$n2->getName()."</b><br>"; print "attribut: <b>".$n2->attributes()."</b><hr>"; } } } /* tag: p attribut: pid --------------------- tag: a attribut: /link3.php -------------------- tag: p attribut: pid ------------------- tag: a attribut: /link.php ------------------- */ ?>
Обрабратите внивание на libxml_use_internal_errors(true);
Важно перехватывать сообщения об ошибках в структуре данных (особенно из cUrl ) и их обрабатывать, иначе, всё будет вылезать на сайте.
Удачи!(Отредактировано автором: 07 Июня, 2018 - 11:36:55)
|