我正在使用ScraperWiki構建一個簡單的屏幕抓取工具,從一家在線商店獲取鏈接。該商店有多個頁面,因此我想從第一個頁面獲取所有鏈接,在尋呼機中找到「下一個」按鈕,轉到該網址,從那裏找到所有鏈接,轉到下一頁,等等。等等。刮刀函數中的PHP變量
這就是我所在的地方。該ScraperWiki使用簡單的HTML DOM和CSS選擇器:
<?php
require 'scraperwiki/simple_html_dom.php';
function nextPage(){
$next = $html->find("li.pager-next a");
$nextUrl = 'http://www.domain.com';
$nextUrl .= $next->href . "\n";
getLinks($nextUrl);
}
function getLinks($url){ // gets links from product list page
$html_content = scraperwiki::scrape($url);
$html = str_get_html($html_content);
$x = 0;
foreach ($html->find("div.views-row a.imagecache-product_list") as $el) {
$url = $el->href . "\n";
$allLinks[$x] = 'http://www.domain.com';
$allLinks[$x] .= $url;
$x++;
}
nextPage();
}
getLinks("http://www.domain.com/foo/bar");
print_r($allLinks);
?>
的getLinks()
功能工作正常,不用時功能,但是當我把它們放在一個功能我得到「未聲明變量」的錯誤。我的問題是:
在PHP中,我可以聲明整個腳本中使用的空變量/數組,比如在Javascript中?我在Stack上看到了幾個答案,這似乎暗示着不需要聲明,這看起來很奇怪。
變量作用域依然存在。要麼使用參數,要麼邀請「全局」變量到每個函數中。 – mario 2013-02-21 23:28:48
可能重複[從另一個片段調用函數時未定義的變量錯誤](http://stackoverflow.com/questions/14301958/undefined-variable-error-when-calling-a-function-from-another-snippet) – mario 2013-02-21 23:30:22
@mario爲此歡呼,找不到一個好的參考。這裏的問題是,在函數被調用之前,變量沒有價值,所以我不能聲明它們。在上面的例子中,通過它們的最好方法是什麼? – Jascination 2013-02-21 23:34:57