私はScraperWikiを使用して、オンラインストアからリンクを取得する単純なスクリーンスクレイパーを構築しています。ストアには複数のページがあるので、最初のページからすべてのリンクを取得し、ポケットベルで[次へ]ボタンを見つけ、そのURLに移動し、そこからすべてのリンクを検索し、次のページに移動します。など。
これが私がいるところです。ScraperWikiは、単純なHTMLDOMおよび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でいくつかの回答を読みましたが、これは宣言する必要がないことを意味しているようですが、これは奇妙に思えます。