我正在使用PHP DOM从页面中提取数据,并且很难使用DomXPath获取嵌套元素的href值。
这是我的html:
<span class="myclass">
<a href="/relative/path">My Value</a>
<span class="otherclass"></span>
</span>
这是我的XPath查询:
$xpath = new DomXPath($dom);
$classname = "myclass";
$nodes = $xpath->query("//span[contains(@class, '$classname')]");
foreach ($nodes as $node){
echo $node->nodeValue;
echo ",";
echo $node->getAttribute('href');
echo "<br>";
}
我能够正确地获得nodeValue('我的值'),但不能获得href的值。我确定我错过了一些东西而不理解这一点。我是否需要单独的查询来获取href值?最好的方法是什么?
答案 0 :(得分:1)
在你的循环中,$node
是跨度,因为你的XPath正在选择具有给定类的span元素,这就是为什么它没有href
。
如果要选择范围下的锚点,请更改为:
$nodes = $xpath->query("//span[contains(@class, '$classname')]/a");