2016-03-03 72 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,其做工精细 –

相关问题