2012-11-07 44 views
1

我有一個腳本,使用正則表達式來獲取卷頁檢索的頁面上的一些價值。第一次請求PHP未定義索引

代碼:preg_match('/<h2>([\d\,]+)<\/h2>/', $curl_exec, $matches);

當我print_r($matches)在我的瀏覽器,它總是在那裏。

我在cron作業中使用此腳本來每10分鐘獲得一次結果。當我自己測試並使用'php script.php'時,它總是說我想要獲取的數據的未定義索引,但是如果我第二次執行'php script.php',它就會工作。有誰知道這可能是什麼原因造成的?任何解決方法?

$CurlHandle = curl_init($StatsUrl); 
curl_setopt($CurlHandle, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($CurlHandle, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($CurlHandle, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/17.0 Firefox/17.0"); 

$Data = curl_exec($CurlHandle); 

preg_match("/<h2>([\d\,]+)<\/h2>/", $Data, $Matches); 

print_r($Data); 

if(!isset($Matches[1])) exit('Irrecoverable error.'); 

$PlayerCount = str_replace(",", "", $Matches[1]); 

$CurrentTime = time(); 
+0

也許我的評論有點偏離主題,但我認爲它很有用。 [不要使用正則表達式解析html](http://stackoverflow.com/a/1732454/1283847) – Leri

+0

是的,是的,我知道。這並不能真正解決我的問題,因爲我已經使用了DOM解析器(simplehtmldom)等,並且發生了同樣的情況。 – Steve

+0

嘗試添加'print_r($ curl_exec)'來查看你從cURL回來的內容。 – Barmar

回答

0

不知道什麼原本是造成問題,但我在失敗的情況下增加了一個system('php script.php');,所以它調用了兩次。這顯然是一種膠帶解決方案,但它工作正常。