1

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

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

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

我想做的是计算找到多少个 URL,这样我就可以将其用作rand( 0 , $itemCells->length )

但是它告诉我$itemCell 不能使用 DOMNodeList 类型的对象作为数组,并且我的 rand() rand() 期望参数 2 很长,给定对象

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

4

1 回答 1

2

我怀疑,因为$length它是一个readonly属性,所以将它传递给函数时会遇到麻烦。因此,解决方案是先将$length值从 a保存DOMNodeList到局部变量,然后调用rand(),如下所示:

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

然后你应该能够这样做从列表中抓取一个随机节点:

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

从那里,要获取 URL,您将执行以下操作:

$url = $random_node->attributes->getNamedItem("href")->nodeValue;
于 2012-07-31T19:32:50.177 回答