檔案搜尋就是利用php遍曆目錄然後去一個個檔案擷取檔案名稱進行對比,然後尋找到我們指定檔案時就停止遍曆並顯示要搜尋的檔案名稱與地址即可。
今天要做一個專門用於處理搜尋檔案的功能,而搜尋的檔案可能是位於某個目錄下的,尋找目錄下是否存在該目錄,PHP函數當中好像沒有專門這樣的搜尋函數。
檔案的操作在 php 中是不可缺少的,而檔案的使用頻率也是非常高的,比如我們常見的目錄管理系統,無資料庫留言本等,都用到了檔案的操作,而這裡的檔案指的不僅僅是目錄的操作,還有指定檔案的操作,比如 txt 檔案等。
下面是一個專門用於檔案搜尋的函數方法,file_search 是方法名,後面有三個參數,$directory 是要搜尋的檔案所在的目錄,比如 “admin/”目錄下, $search 是搜尋的檔案了,$recursive 是判斷是否搜尋成功的,預設就可以了,如果還需要其它操作,可以在後面進行添加相應參數即可。
例1
| 代碼如下 |
複製代碼 |
function file_search($directory, $search, $recursive = TRUE) { $res = FALSE; $dir_handle = opendir($directory); while( FALSE !== ($file = readdir($dir_handle)) ) { if( $file == '.' || $file == '..' ) { continue; } if( is_dir("$directory\$file") ) { if( $recursive ) { $res = file_search("$directory\$file", $search); if( $res !== FALSE ) { return $res; } } } if( $file == $search ) { return "$directory\$file"; } } return FALSE; } ?> |
例2
| 代碼如下 |
複製代碼 |
/*檔案尋找函數 用法: findfile (目錄,是否遍曆子目錄,是否尋找檔案內容,不尋找的目錄) ; Ketle 2005-07-07 */ function findfile ($dir, $find_sub_dir=false, $find_content=false, $except_dir=false) { $d = dir($dir); while (false !== ($entry = $d->read())) { if($entry == "." || $entry == ".." || in_array ($entry, $except_dir)) continue; $file = $d->path."/".$entry; if ( is_dir ( $file) ) { if ( $find_sub_dir ) { findfile ($file, $find_sub_dir, $find_content, $except_dir) ; } }else { if ( $find_content ) { if ( strstr(file_get_contents($file),$find_content) ) { echo $file." n"; } }else { echo $file." n"; } } } $d->close(); } //test: findfile ('..',true,'芙蓉jj',array('templates_c','admin','xixi')) ; ?> |
例3
使用php glob函數尋找檔案,遍曆檔案目錄
函數說明:array glob ( string $pattern [, int $flags ] )
功能:尋找與模式比對的檔案路徑,返回包含匹配檔案(目錄)的數組(註:被檢查的檔案必須是伺服器系統的,不能用於遠程檔案)
參數說明:第一個參數:匹配模式;第二個選擇性參數:
•GLOB_MARK - 在每個返回的項目中加一個斜線
•GLOB_NOSORT - 按照檔案在目錄中出現的原始順序返回(不排序)
•GLOB_NOCHECK - 如果沒有檔案匹配則返回用於搜尋的模式
•GLOB_NOESCAPE - 反斜線不轉義元字元
•GLOB_BRACE - 擴充 {a,b,c} 來匹配 'a','b' 或 'c'
•GLOB_ONLYDIR - 僅返回與模式比對的目錄項
| 代碼如下 |
複製代碼 |
$file = glob('{,.}*', GLOB_BRACE); //匹配所有檔案 $file1 = glob('*.php'); //匹配所有php檔案 print_r($file1);
|
例4
| 代碼如下 |
複製代碼 |
print_r(listDir('./')); //遍曆目前的目錄 function listDir($dir){ $dir .= substr($dir, -1) == '/' ? '' : '/'; $dirInfo = array(); foreach (glob($dir.'*') as $v) { $dirInfo[] = $v; if(is_dir($v)){ $dirInfo = array_merge($dirInfo, listDir($v)); } } return $dirInfo; } |
http://www.bkjia.com/PHPjc/632907.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/632907.htmlTechArticle檔案搜尋就是利用php遍曆目錄然後去一個個檔案擷取檔案名稱進行對比,然後尋找到我們指定檔案時就停止遍曆並顯示要搜尋的檔案名稱與地址...