返回xpath Dom解析的所有结果?

问题描述:

我想刮了使用PHP的网站, 下面是代码:返回xpath Dom解析的所有结果?

<?php 
$url = 'http://sample.com'; 
$dom = new DOMDocument(); 
@$dom->loadHTMLFile($url); 
$xpath = new DOMXpath($dom); 
$contents = $xpath->query('//p[@class="ac"]'); 
$content = $dom->saveHTML($contents->item(0)); 
echo $content; 
echo '<br />'; 
?> 

但它会返回其中有“AC”级只有第一p标签,但是我希望它返回所有结果。所以,我编辑的代码:

<?php 
$url = 'http://sample.com'; 
$dom = new DOMDocument(); 
@$dom->loadHTMLFile($url); 
$xpath = new DOMXpath($dom); 
$contents = $xpath->query('//p[@class="ac"]'); 
$content = $dom->saveHTML($contents->item(0)); 
for($i=0;$i<$contents->length; $i++){ 
    echo $contents->item($i); 
} 
echo '<br />'; 
?> 

但是,它给了我这个错误:

Catchable fatal error: Object of class DOMElement could not be converted to string in

我做错了吗?

$ contents-> item($ i)是DomElement对象。例如,您可以打印$contents->item($i)->nodeValue以获取段落的文本或以这种方式获得外部html文件$content = $dom->saveHTML($contents->item($i))

但我宁愿这样的循环

$xpath = new DOMXpath($dom); 
foreach($xpath->query('//p[@class="ac"]') as $content) 
    echo $dom->saveHTML($content); 
echo '<br />'; 
+0

谢谢!非常棒! –

+0

不客气! – splash58

+0

我怎样才能在这里替换html输出中的文本?我应该用这种方式吗? echo $ dom-> saveHTML(str_replace('text1','text2',$ content)); –