2013年8月29日 星期四

[PHP]讀取資料夾檔案內容glob,scandir,readdir


PHP讀取資料夾相關的函數有三個glob,scandir,readdir,方便性的排序個人認為是glob > scandir > readdir,以下為介紹:

glob() 函數返回匹配指定模式的檔案名或目錄。




該函數返回一個包含有匹配檔 / 目錄的陣列。如果出錯返回 false。

array glob ( string $pattern [, int $flags = 0 ] )

參數:
  • GLOB_MARK - 在每個返回的項目中加一個斜線
  • GLOB_NOSORT - 按照檔在目錄中出現的原始順序返回(不排序)
  • GLOB_NOCHECK - 如果沒有檔匹配則返回用於搜索的模式
  • GLOB_NOESCAPE - 反斜線不轉義元字元
  • GLOB_BRACE - 擴充 {a,b,c} 來匹配 'a','b' 或 'c'
  • GLOB_ONLYDIR - 僅返回與模式匹配的目錄項
  • GLOB_ERR - 停止並讀取錯誤資訊(比如說不可讀的目錄),默認的情況下忽略所有錯誤

glob有許多參數可以使用,也可以用正規表示法來做搜尋,功能較強大,故使用時需小心被人輸入../../之類的動作而看光你的系統資料夾。

scandir() 函數返回一個陣列,其中包含指定路徑中的檔和目錄。


若成功,則返回一個陣列,若失敗,則返回 false。如果 directory 不是目錄,則返回布林值 false 並生成一條 E_WARNING 級的錯誤。

array scandir ( string $directory [, int $sorting_order = SCANDIR_SORT_ASCENDING [, resource $context ]] )

參數:
  • directory     必需。規定要掃描的目錄。
  • sort     可選。規定排列順序。默認是 0 (昇冪)。如果是 1,則為降冪。
  • context     可選。規定目錄控制碼的環境。context 是可修改目錄流的行為的一套選項。
 使用scandir須注意他的傳回值前兩個陣列值會是"."與".."而不是單純的資料夾內容。

readdir() 函數返回由 opendir() 打開的目錄控制碼中的條目。

若成功,則該函數返回一個檔案名,否則返回 false。

 string readdir ([ resource $dir_handle ] )

參數:只有傳入資料夾路徑

範例:

<?phpif ($handle opendir('/path/to/files')) {
    echo 
"Directory handle: $handle\n";
    echo 
"Entries:\n";

    
/* This is the correct way to loop over the directory. */
    
while (false !== ($entry readdir($handle))) {
        echo 
"$entry\n";
    }

    
/* This is the WRONG way to loop over the directory. */
    
while ($entry readdir($handle)) {
        echo 
"$entry\n";
    }

    
closedir($handle);
}
?>

沒有留言:

張貼留言

Google Analytics初學者入門簡介