2016-06-11 9 views
0

は、私はPHPを使用してウェブサイトをこすりしたい、 はここのコードです:xpath Dom parseからすべての結果を返しますか?

<?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を印刷すると、たとえば段落のテキストを取得したり、そのようにして$content = $dom->saveHTML($contents->item($i))を取得してouterhtmlを取得することができます。

しかし、私はこのようなループに

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

感謝を好むだろう!よく働く ! –

+0

あなたはようこそ! – splash58

+0

ここでhtml出力のテキストを置き換えることはできますか?私はこの方法で使うべきですか?エコー$ dom-> saveHTML(str_replace( 'text1'、 'text2'、$ content)); –

関連する問題