在没有打开的情况下搜索文件内的内容?

时间:2011-09-10 07:12:26

标签: php

我在某个文件夹中有大约50个文件

我希望所有文件都包含“名称:EMAD”!

示例:

php imap库! 他们在成千上万的消息文本文件中搜索某些单词!

我写了一个愚蠢的函数来打开文件并在

中搜索
$s = scandir('dir');
foreach($s as $file){
$content = file_get_contents($file);
if(strpos($content,'Name : ENAD') !== false)
$matched_files[] = $file;
}

但如果有数千个文件呢?

我应该打开所有文件???? !!!!

可以在不打开文件的情况下搜索文件中的内容吗?

如果没有

最好和最快的方法是什么?php

2 个答案:

答案 0 :(得分:3)

  

可以在不打开文件的情况下搜索文件中的内容吗?

当然 - 没有。你的常识在哪里?你可以在没有打开的情况下搜索冰箱吗?

  

我在某个文件夹中有大约50个文件

没问题,它会足够快。打开一个文件并不像你想象的那样繁重。

  

但如果有数千个文件呢?

首先有一千人来问。

  

最好和最快的方法是什么?

将数据存储在数据库中,而不是文件

答案 1 :(得分:2)

您是否有理由需要使用PHP函数?这正是grep设计的目的......

您可以随时使用PHP的exec()来运行适当的grep命令,例如:

grep -lr 'Name : ENAD' dir

但您可能还想考虑(如果您是创建数千个文件的人)这是否是存储数据的最佳方式 - 如果您通常需要快速搜索的能力,您可能需要使用数据库而不是普通文件(例如MySQL,PostgreSQL,SQLite等),或保留搜索索引(使用例如Sphinx,Solr或Lucene)。