PHP檔案搜尋程式碼_PHP教程

來源:互聯網
上載者:User
檔案搜尋就是利用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遍曆目錄然後去一個個檔案擷取檔案名稱進行對比,然後尋找到我們指定檔案時就停止遍曆並顯示要搜尋的檔案名稱與地址...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.