2012-10-02 62 views
0

我希望能夠讀取純文本文件並匹配多行,而不需要多次遍歷文本文件。我傳遞一個數組中的字符串列表,我想匹配,理想情況下,我想把它放入一個數組中。使用php讀取文件匹配行使用php

我可以使用下面的代碼實現所需的結果,但它需要多次讀取文本文件。

function readFile($line){ 
    $contents = file("test.txt"); 

    if(preg_match("/$line*/i", $val)){ 
    return($val); 
    } 
} 

理想情況下,我想做到以下幾點:

// pass an array to the funciton which will parse the file once and match on the elements defined. 
$v = readFile(array("test_1", "test_2", "test_2", "test_3")); 

// return an array with the matched elements from the search. 
print_r($v); 

任何幫助將非常感激。

謝謝大家!

+0

你已經知道解決方案:迭代文件一次,檢查每一行的搜索詞。所以有什麼問題? – Gordon

回答

1
$val = array(); 
foreach ($contents as $file) { 
    foreach ($line as $l) { 
     if (stristr($file, $l)) { 
     $val[] = $file; 
     break; // Don't need to check the other $line values 
     } 
    } 
} 
+0

解決方案工作 - 感謝所有幫助 - 非常讚賞! – user1270150

0
$val = array(); 
foreach ($contents as $file) { 
    foreach ($line as $l) { 
     if (stristr($file, $l) { 
     $val[] = $file; 
     } 
    } 
} 

即使您想堅持preg_match,「*」是不必要的。

+0

您可能想添加一個'break;'語句,這樣如果'$ file'匹配多個字符串,它只會添加到'$ val'一次。 – Barmar

+0

@Barmar我認爲他會希望*每增加一次*,但我不確定。 –

+0

可能會更好,因爲爆炸丸有它,所以他可以使用陣列而不是重複加載文件 – Chris