2011-09-10 41 views
-1

我在一些文件夾中有大約50個文件搜索文件內的東西,而不打開它?

我想讓所有文件都包含'Name:EMAD'裏面!

示例:

php imap庫! 他們在數千條消息文本文件中搜索某個詞!

我已經寫了一個愚蠢的函數打開文件,其內部

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

搜索但如果有成千上萬的文件!

我應該打開所有文件嗎? !!!!

是否可以在不打開它的情況下搜索文件內的某些內容?

如果NO

什麼是做到這一點的最好的和快速的方式?PHP

回答

2

是否有你需要使用PHP函數的原因是什麼?這正是grep的目的是做...

你總是可以只使用PHP的exec()運行適當的grep的命令,如:

grep -lr 'Name : ENAD' dir 

但你可能還需要考慮(如果你對於創建數千個文件的人來說,這是否是存儲數據的最佳方式 - 如果您通常需要快速搜索功能,則可能需要使用數據庫而不是普通文件(例如MySQL, PostgreSQL,SQLite等)或保留搜索索引(使用例如Sphinx,Solr或Lucene)。

3

是否可以在不打開它的情況下搜索文件內的某些內容?

當然 - 沒有。你的常識在哪裏?你可以在不打開的情況下搜索冰箱嗎?

我有一些文件夾

沒有問題的約50文件,這將是速度不夠快。打開一個文件並不像你想象的那麼繁重。

但是如果有成千上萬的文件呢!

先有一千個然後過來問。

什麼是最好的和快速的方式來做到這一點?

將您的數據存儲在數據庫中,而不是文件

相關問題