选择XPath查询
问题描述:
我用下面的PHP代码来获取URL的形式随机量的XPath查询的第N个元素:选择XPath查询
@$dom = new DOMDocument();
@$dom->loadHTML($rawPage);
@$xpath = new DOMXPath($dom);
@$itemCells = $xpath->query("//td[@width=120]/a");
我需要从池中随机挑选一个URL,这样我可以访问它通过cURL。
我想什么做的是了解有多少URL被发现,所以我可以使用count的是,由于rand(0 , $itemCells->length)
最大但它告诉我,$itemCell
无法使用类型的DOMNodeList的对象数组和我的兰特()兰德()期望参数2很长,对象给出
也许有更好的方式去做这件事。
答
我怀疑,既然$length
是readonly
属性,你会遇到麻烦,将它传递给一个函数。所以,解决的办法是从一个DOMNodeList
的$length
值先保存到一个局部变量,然后调用rand()
,就像这样:
$max = $itemCells->length;
$rand = rand(0, $max);
那么你应该能够做到这一点抓住从列表中随机节点:
$random_node = $itemCells->item($rand);
从那里,抢URL,你会怎么做:
$url = $random_node->attributes->getNamedItem("href")->nodeValue;
你尝试从节约的价值' - > length'到一个局部变量第一? '$ max = $ itemCells-> length; $ rand = rand(0,$ max);'。那么你应该可以做'$ random_node = $ itemCells-> item($ rand);'。 – nickb 2012-07-31 19:26:11
谢谢@nickb,似乎照顾随机()问题。但是,$ itemCell问题仍然存在。 – KiloJKilo 2012-07-31 19:29:41
'$ itemCell'有什么问题? – nickb 2012-07-31 19:33:25