我使用以下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,对象给定< /强>
也许有更好的方法来解决这个问题。
答案 0 :(得分:2)
我怀疑由于$length
是readonly
属性,因此在将其传递给函数时会遇到麻烦。因此,解决方案是首先将$length
值从DOMNodeList
保存到局部变量,然后调用rand()
,如下所示:
$max = $itemCells->length;
$rand = rand( 0, $max);
然后你应该能够从列表中获取一个随机节点:
$random_node = $itemCells->item( $rand);
从那里,要获取URL,你会这样做:
$url = $random_node->attributes->getNamedItem("href")->nodeValue;