2016-03-03 49 views
1

我有一個包含數百萬條記錄的.txt文件。現在我有20個記錄的另一個文件,現在我想要從第一個文件搜索第二個文件匹配記錄。我使用下面的查找記錄代碼使用PHP:如何在一個文件中搜索字符串到另一個文件?

$million_records = file('file/snp-db.txt'); 
$search_word   = file('file/test.txt'); 
foreach($searchword as $word){ 
    foreach($million_records as $single_record){  
    if(strpos($single_record, $word) !== false){ 
     echo $single_record .'<br>'; 
     } 
    } 
} 

但是這個代碼僅返回類似這樣的最後一個值: test.txt文件只4條

rs12564807 
rs3131972 
rs148828841 
rs12124819 

現在我想找到這些來自snp-db.txt文件的記錄具有以下格式的百萬記錄:

rs12564807 1 734462 AA 
rs3131972 1 752721 GG 
rs148828841 1 760998 CC 
rs12124819 1 776546 AG 
rs115093905 1 787173 GG 
rs11240777 1 798959 AG 
rs7538305 1 824398 AC 
rs4970383 1 838555 CC 
rs4475691 1 846808 CC 
rs7537756 1 854250 AA 
rs13302982 1 861808 GG 
rs55678698 1 864490 CC 
i6019299 1 871267 CC 

現在我只收到rs12124819的結果。 你能幫我什麼是這個代碼

回答

1

問題腳麻在於每個$word$single_record攜帶隱藏的新的符合他們需要在$word測試爲$single_record發生之前刪除的事實。

而且它會更快迭代通過million_records文件第一(也是唯一一次)

$million_records = file('file/snp-db.txt'); 
$search_word = file('file/test.txt'); 

foreach ($million_records as $single_record) { 
    $single_record = preg_replace("/\r|\n/", '', $single_record); 
    foreach ($search_word as $word) { 
     $word = preg_replace("/\r|\n/", '', $word); 
     if (strpos($single_record, $word) !== false) { 
      echo $single_record."\r\n"; 
     } 
    } 
} 
+0

謝謝@Kostis,其做工精細 –

相關問題