PHP DomXPath查找嵌套元素值

时间:2014-05-16 20:37:40

标签: php dom xpath

我正在使用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值?最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

在你的循环中,$node是跨度,因为你的XPath正在选择具有给定类的span元素,这就是为什么它没有href

如果要选择范围下的锚点,请更改为:

$nodes = $xpath->query("//span[contains(@class, '$classname')]/a");