搜索文件夹中的所有文件以查找字符串

时间:2013-02-23 14:30:56

标签: php linux

我正在寻找在某些文件夹结构中搜索某些字符串的最快方法。我知道我可以使用file_get_contents从文件中获取所有内容,但我不确定是否快速。也许已经有一些解决方案可以快速运行。我正在考虑使用scandir来获取所有文件,并使用file_get_contents来读取它的内容并使用strpos来检查字符串是否存在。

你认为有更好的方法吗?

或者也许尝试使用php exec和grep?

提前致谢!

2 个答案:

答案 0 :(得分:15)

您的两个选项是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
    }
}

就绩效而言,您可以随时compute the real-time speed of your code或轻松找到memory usage。对于较大的文件,您可能希望an alternative使用file_get_contents

答案 1 :(得分:3)

使用目录迭代器和foreach: http://php.net/manual/en/class.directoryiterator.php