2016-06-11 164 views
0

我想颳了使用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

我做錯了嗎?

回答

1

$ 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)); –