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 是可修改目錄流的行為的一套選項。
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);
}?>
沒有留言:
張貼留言