2014-01-26 117 views
0

我正在嘗試構建FaH統計信息刮板。每隔一小時,新更新的統計列表將被拉到我的服務器,通過cronwget進入此文件http://chrislabs.info/statsFile.txt。這在$page使用file_get_contents在腳本中打開。preg_match_all找不到大文本文件中的所有模式

然後,獨特的團隊號碼列表(第四列),我想正則表達式使用下面的代碼包含組號的所有行:

foreach($teamArr as $team){ 
    $pattern = "/(.*[ascii])\t([0-9]*)\t.*[0-9]\t$team/"; 
    preg_match_all($pattern, $page, $matches); 
    echo "<pre>"; 
    print_r($matches); 
    echo "</pre>"; 

然而,這並不找到所有在$page的比賽,我現在虧本了。我已將pcre.* INI設置更改爲1GB。

你可以看一下這裏的輸出http://chrislabs.info/FoldingStats_MYSQL.php

回答

3

嘗試使用此:

$pattern = '~^(?:\S++\t){3}' . $team . '$~m'; 

你的格局沒有找到所有的比賽,因爲你添加[ascii],只有匹配的字母A或字母s或字母c或字母i。如果你想匹配所有你必須使用的字母[a-z]

另一種方法是使用fgetcsv並刪除所有不屬於你正在尋找的團隊的記錄。

您也可以使用兩個explode()第一個\n,第二個\t並檢查$item[3]爲您的團隊。

+0

謝謝。我將模式改爲 $ pattern =「/(.*[[:cici:]])\t([0-9]*]\t.*[0-9]\t$team/」; – Chris

相關問題