返回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 />';
谢谢!非常棒! –
不客气! – splash58
我怎样才能在这里替换html输出中的文本?我应该用这种方式吗? echo $ dom-> saveHTML(str_replace('text1','text2',$ content)); –