PHP $ xpath-> expressão de consulta não está funcionando

A consulta PHP xpath não está funcionando. qualquer ideia?

Problema # 1
HTML Fonte:

 Some contents i want to capture   more content i want to capture too   all row in this table i want to capture   they are all pokemon, i want to capture  

PHP eu tentei:

 $url = "http://www.example.com/"; $opts = array('http'=>array('header' => "User-Agent:MyAgent/1.0\r\n")); $context = stream_context_create($opts); $text = file_get_contents($url,false,$context); $dom = new DOMDocument(); @$dom->loadHTML($text); $xpath = new DOMXPath($dom); $divs = $xpath->query('//div/@class="abc pqr xyz"/'); foreach($divs as $b){ //echo $b->name.'
'; print_r($b); }

Mas nada veio, alguma ajuda para a expressão certa para essa consulta?


Problema # 2
Eu queria verificar se eu estou recebendo conteúdo, então eu tentei isso e tenho todos os links href:

 $divs = $xpath->query('//a/@href'); foreach($divs as $b){ print_r($b); // this is line #19 } 

Eu recebi esse erro:

 DOMAttr Object Warning: print_r(): Not yet implemented in C:\xampp\htdocs\testing\index.php on line 19 

Alguma idéia, por que estou recebendo esse aviso?


Problema # 3

   

I am not sure about the title Not a shoe

This is just blah blah blah

I am not sure about the title No a shoe

This is just blah blah blah

qualquer idéia de como posso obter essa informação e convertê-la em uma matriz como esta:

 array ( title => I am not sure about the title, link => http://www.example.com/?id=xx, small => not a shoe, blahblah => This is just blah blah blah ) 

Problema # 1

Com base na sua marcação, você está tentando segmentar tags

, mas em sua consulta, é //div , o que não faz sentido. Alvo

‘s:

 $rows = $xpath->query('//tr/td[@class = "abc pqr xyz"]'); foreach($rows as $b){ echo $b->nodeValue . '
'; }

Saída de amostra

Problema # 2

Isso provavelmente se relaciona com esta questão:

https://bugs.php.net/bug.php?id=61858&edit=1

Problema # 3

Você poderia continuar a usar xpath para segmentar os valores desejados. Selecione todos aqueles

e de lá, basta usar cada um deles como o nó de contexto:

 $data = array(); $td = $xpath->query('//td'); foreach($td as $b){ $data[] = array( 'title' => $xpath->evaluate('string(./h3/a)', $b), 'link' => $xpath->evaluate('string(./h3/a/@href)', $b), 'small' => trim($xpath->evaluate('string(./h3/small)', $b)), 'blahblah' => trim($xpath->evaluate('string(./div[@class="blahblah"])', $b)), ); } 

Saída de amostra