2017-04-24 11 views
0

検索した文字列に一致するものがあれば、ファイルを読み込んで特定の行を取得しています。検索する文字列が配列に格納されています。私は文字列を取得する配列をループするたびにファイルを開くことはできません。しかし、ファイルの最初の行に行き、再び検索を開始したい。このファイルには約15k行が含まれています。私は毎回(ループ内で)そのファイルを開いている場合は、正常に動作します。しかし、ループ外のファイルを開く場合。最初に一致した文字列だけが返されます。PHPのファイルの最初の行に移動するには?

$scheme_code = 
array("106212","112422","114239","104685","100122","118191","131666"); 
foreach($scheme_code as $searchthis) { 

     $handle = @fopen("myfile", "r"); 


     //DONT WANT TO DO THE ABOVE LINE FOR EVERY ITERATION 

     if ($handle) 
     { 
      //echo "handle open"."<br>"; 
      while (!feof($handle)) 
      { 

       $buffer = fgets($handle,4096); 
       if(strpos($buffer, $searchthis) !== FALSE){ 
        $matches[] = $buffer; 
       }      
      }    
     }  
    } 

しかし、この

$handle = @fopen("Myfile", "r"); 
foreach(){ 
    // inside foreach 
    //go to the first line of the file 
} 
fclose($handle); 

EDITような何かをしたい - 私は巻き戻しを試してみました()。私は「)(巻き戻し:ストリームがが求めてサポートしていません」の通知を得た。ここ

+0

私は巻き戻しを使用する場合http://php.net/manual/en/function.rewind.php – prateekkathal

+0

を見てください、それはファイルのdoesntのサポートが求めていると言います。 –

答えて

1

あなたはあなたのラインの完全な配列を与えるだろうし、その後、あなたのIOリソース毎回を使用せずに、行ごとに一致させることができますfile()機能を使用することができますfopen

<?php 

$linesArray = file("/path/to/your/file.txt"); 
foreach($linesArray as $line){ 
    // do the stuff or matching you want to perform line by line on $line 
} 
関連する問題