我必須創建一個文件,其中一個充滿關鍵字序列(約20k行),另一個充滿正則表達式(〜2.5k)。foreach和preg_match上的大量數據無法正常工作
我想用每個正則表達式測試每個關鍵字並打印出匹配的關鍵字。我測試了我的文件,這大約產生了22 750 000次測試。我使用下面的代碼:
$count = 0;
$countM = 0;
foreach ($arrayRegexp as $r) {
foreach ($arrayKeywords as $k) {
$count++;
if (preg_match($r, $k, $match) {
$countM++;
echo $k.' matched with keywords '.$match[1].'<br/>';
}
}
}
echo "$count tests with $countM matches.";
不幸的是,計算一段時間後,只顯示實際比賽的部分和最後一行保持計數永遠不會顯示。更奇怪的是,如果我評論preg部分只保留兩個foreach和count顯示,一切正常。
我認爲這是由於要處理的數據量過大,但我想知道是否有我沒有遵循的那類操作的建議。我使用的正則表達式非常複雜,我無法改變其他的東西。
想法任何人?
你應該顯示一個關鍵字的樣本(這實際上是在這裏形成主題?)和正則表達式。 – mario 2010-12-20 11:01:22
另外:你只是對比賽計數感興趣,還是對比賽本身感興趣? – Tomalak 2010-12-20 11:02:43
顯示關鍵字示例將是無關緊要的,因爲它只是通過搜索引擎進行的查詢。正則表達式檢查查詢中是否存在特定的產品名稱,並顯示相應的廣告。 – 2010-12-20 11:14:52