Vladimir Kheifets пишет:Соц Сеть пишет:Добрый день ! никак не получается вытащить тег <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 ) и их обрабатывать, иначе, всё будет вылезать на сайте.
Удачи!