选择xpath查询的第N个元素

时间:2012-07-31 19:23:22

标签: php xpath random

我使用以下php代码来获取随机数量的URL形式的xpath查询:

@$dom = new DOMDocument();
@$dom->loadHTML( $rawPage );
@$xpath = new DOMXPath( $dom );
@$itemCells = $xpath->query( "//td[@width=120]/a" );

我需要从该池中随机选择一个URL,以便我可以通过cURL访问它。

我想要做的是获取找到多少个网址的计数,以便我可以将其用作rand( 0 , $itemCells->length )

中的最大值

然而它告诉我$itemCell 不能使用DOMNodeList类型的对象作为数组,并且我的rand() rand()期望参数2为long,对象给定< /强>

也许有更好的方法来解决这个问题。

1 个答案:

答案 0 :(得分:2)

我怀疑由于$lengthreadonly属性,因此在将其传递给函数时会遇到麻烦。因此,解决方案是首先将$length值从DOMNodeList保存到局部变量,然后调用rand(),如下所示:

$max = $itemCells->length; 
$rand = rand( 0, $max);

然后你应该能够从列表中获取一个随机节点:

$random_node = $itemCells->item( $rand);

从那里,要获取URL,你会这样做:

$url = $random_node->attributes->getNamedItem("href")->nodeValue;