DOMXPath $ html-> query('// p [@ class =“myclass”] / a') - > item(0);不工作

时间:2011-07-02 13:35:58

标签: php null domxpath

DOMXPath $html->query('//p[@class="myclass"]/a')->item(0);无效。

这是HTML:

<p class="username">
<img src="http://static1.tryal.com/img/b.gif" onclick="lalalaa()" class="a12s_iYblt4hN_DkIt_GoiyOtu8 opsi" />
<b>
<a href="/about"><b>Lalala.</b></a>
</b>
</p>


$name = $html->query('//p[@class="username"]/a')->item(0)->nodeValue; 
//This doesn't return the name "Lalala.";

$name = $html->query('//p[@class="username"]')->item(0)->nodeValue; 
//This works just fine.

为什么这棵树不起作用?我打错了吗?

非常感谢你。

2 个答案:

答案 0 :(得分:3)

您指定的xpath未提供任何结果(或者结果没有精确的元素)。您可以通过不让b元素滑过来解决这个问题:

$name = $html->query('//p[@class="username"]/b/a')->item(0)->nodeValue; 
                                            ^^^

或者不a来自p的直接/直接孩子,但也更深一些( 的后代,xpath中的双斜杠//):

$name = $html->query('//p[@class="username"]//a')->item(0)->nodeValue; 
                                            ^^

答案 1 :(得分:1)

尝试

$name = $html->query('//p[@class="username"]//a')->item(0)->nodeValue;

你正在寻找'单一斜线''p'的'a'孩子,而你想要我理解的是'a'后代(双斜线)'p'