0

如何让这个代码片段返回我正在解析的页面上每个div类的值,而不是像现在这样只返回第一个?age

$nodelist = $xpath->query('//div[@class="age"]')->item(0);
print_r($nodelist->nodeValue);

我有一些类似的代码可以返回我想要的所有图像,但我似乎无法修改它以返回div我想要的匹配值:

$nodelist = $xpath->query( "//div[@class='thumb-wrapper']" );

foreach ($nodelist as $node) 
{
    $tags = $node->getElementsByTagName('img');
    $image =  $tags->item(0)->getAttribute('src');
    echo '<img src="'. $image .'" alt="image" ><br>';
}
4

2 回答 2

0

您需要使用“*”

使用星号 ( ) 选择前面路径中的每个元素。因此,如果您想匹配 td 标签内的每个元素(例如 p、div 等),您可以编写://td/

于 2013-08-07T04:45:59.713 回答
0

此代码的问题不在于 XPath,而是在返回后您对它的处理方式。

$nodelist = $xpath->query('//div[@class="age"]')->item(0);
print_r($nodelist->nodeValue);

这将获取所有divs ,然后使用第一个获取第一个->item(0)项目,然后将第一个项目分配给变量$nodelist

以您现有的代码为例,您可以通过删除来更改它->item(0),将所有结果分配给$nodelist并遍历它们,就像第二个“工作”示例一样:

$nodelist = $xpath->query('//div[@class="age"]');
foreach ($nodelist as $node) 
{
    // Do something with each div
}
于 2013-08-07T05:10:31.220 回答