PHP檔案搜尋程式碼

來源:互聯網
上載者:User

今天要做一個專門用於處理搜尋檔案的功能,而搜尋的檔案可能是位於某個目錄下的,尋找目錄下是否存在該目錄,PHP函數當中好像沒有專門這樣的搜尋函數。

檔案的操作在 php 中是不可缺少的,而檔案的使用頻率也是非常高的,比如我們常見的目錄管理系統,無資料庫留言本等,都用到了檔案的操作,而這裡的檔案指的不僅僅是目錄的操作,還有指定檔案的操作,比如 txt 檔案等。

下面是一個專門用於檔案搜尋的函數方法,file_search 是方法名,後面有三個參數,$directory 是要搜尋的檔案所在的目錄,比如 “admin/”目錄下, $search 是搜尋的檔案了,$recursive 是判斷是否搜尋成功的,預設就可以了,如果還需要其它操作,可以在後面進行添加相應參數即可。

例1

 代碼如下 複製代碼

<?php

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

 代碼如下 複製代碼

<?php
/*檔案尋找函數
用法:
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."<br>n";
                                }
                        }else
                        {
                                echo $file."<br>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

 代碼如下 複製代碼

<?php

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;
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.