2013-02-23 5 views
6

私は、いくつかの文字列をいくつかのフォルダ構造に検索するための最も速いアプローチを探しています。私はfile_get_contentsでファイルからすべてのコンテンツを取得できることを知っていますが、高速であるかどうかはわかりません。たぶん、既に速く動作するいくつかのソリューションがあります。私はscandirを使用してすべてのファイルとfile_get_contentsを取得し、その内容を読み込み、文字列が存在するかどうかを確認することを考えていました。フォルダ内のすべてのファイルを文字列で検索する

あなたはこれを行うより良い方法があると思いますか?

または、おそらくgrepでphp execを使用しようとしていますか?

ありがとうございます!

+0

https://github.com/skfaisal93/AnyWhereInFiles –

答えて

12

あなたの二つの選択肢がDirectoryIteratorglob次のとおりです。

$string = 'something'; 

$dir = new DirectoryIterator('some_dir'); 
foreach ($dir as $file) { 
    $content = file_get_contents($file->getPathname()); 
    if (strpos($content, $string) !== false) { 
     // Bingo 
    } 
} 

$dir = 'some_dir'; 
foreach (glob("$dir/*") as $file) { 
    $content = file_get_contents("$dir/$file"); 
    if (strpos($content, $string) !== false) { 
     // Bingo 
    } 
} 

パフォーマンスの面では、あなたは非常に簡単にmemory usageを常にcompute the real-time speed of your codeかを知ることができます。大きなファイルの場合は、an alternativefile_get_contentsを使用します。

+0

あなたのソリューションはファイル名をチェックするので、ファイルの内容をチェックする必要があります。コードに大きな違いはありますか? – bla0009

+0

更新された回答を表示 – hohner

関連する問題