显示php文档解析器的结果

显示php文档解析器的结果,php,parsing,dom,Php,Parsing,Dom,您可以回显文档解析器的结果,还是必须首先创建一个数组来显示结果?无论如何,当运行代码时,什么也没有出现(没有输出或错误),我已经尝试了这两种方法。可能是一个网站的问题,但我已经尝试了其他一些,并得到相同的结果 <?php $ebayquery ='halo'; $ebayhtml = 'https://www.ebay.com/sch/i.html_from=R40&_trksid=p2380057.m570.l1311.R6.TR12.TRC2.A0.H0.X.TRS0&

您可以回显文档解析器的结果,还是必须首先创建一个数组来显示结果?无论如何,当运行代码时,什么也没有出现(没有输出或错误),我已经尝试了这两种方法。可能是一个网站的问题,但我已经尝试了其他一些,并得到相同的结果

<?php
$ebayquery ='halo';
$ebayhtml = 'https://www.ebay.com/sch/i.html_from=R40&_trksid=p2380057.m570.l1311.R6.TR12.TRC2.A0.H0.X.TRS0&_nkw=' . $ebayquery . '&_sacat=0';
$ebayresults = array();

$document = new \DOMDocument('1.0', 'UTF-8');
$internalErrors = libxml_use_internal_errors(true);
$document->loadHTML($ebayhtml);
libxml_use_internal_errors($internalErrors);
$xpath = new DOMXpath($document);
$links = $xpath->query('//h3[@id="lvtitle"]/a');

foreach($links as $a) {
    echo $a->nodeValue;
}
?>
loadHTML($ebayhtml);
libxml\u使用内部错误($internalErrors);
$xpath=newdomxpath($document);
$links=$xpath->query('//h3[@id=“lvtitle”]/a');
foreach($a链接){
echo$a->nodeValue;
}
?>

该代码有几个问题。首先是
loadHTML()
采用HTML字符串,而不是文件名或URI。因此,首先您必须阅读网页并将其传递(我在这里使用了
file\u get\u contents()

其次,XPath查找id属性为lvtitle的任何
标记,只有class属性为lvtitle的实例。我已经更新了XPath表达式以使用它

$ebayquery ='halo';
$ebayhtml = 'https://www.ebay.com/sch/i.html_from=R40&_trksid=p2380057.m570.l1311.R6.TR12.TRC2.A0.H0.X.TRS0&_nkw=' . $ebayquery . '&_sacat=0';
$ebayresults = array();

$document = new \DOMDocument('1.0', 'UTF-8');
$internalErrors = libxml_use_internal_errors(true);
$ebayhtml = file_get_contents($ebayhtml);
$document->loadHTML($ebayhtml);
libxml_use_internal_errors($internalErrors);
$xpath = new DOMXpath($document);
$links = $xpath->query('//h3[@class="lvtitle"]/a');
print_r($links);
foreach($links as $a) {
    echo $a->nodeValue.PHP_EOL;
}

虽然您对第二个问题的解决方案非常有效,但第一个问题有些缺陷,因为在执行时,url会被使用两次,一次用于访问网站,另一次用于搜索查询。因此,显示的结果基于搜索框中是否输入了“from=R40&trksid…….”。此外,如果结果列表前面没有
DOMNodeList对象([length]=>48)
,如何打印结果?我不确定需要如何获取结果页面,但重要的部分是传递获取页面的结果,而不是URI。至于删除额外的输出,请从代码中删除打印。显示错误结果的第一个问题就是错误的URL。现在一切都解决了:)