glob可用參數:
GLOB_MARK - 若檔案為資料夾,在回傳檔案路徑的最後面加上斜線"\"
GLOB_NOSORT - 保持檔案路徑在原資料夾的出現順序(不重新排序)。※筆者在Win環境看不出差異
GLOB_NOCHECK - 若找不到匹配的檔案路徑,回傳匹配的條件字串
GLOB_NOESCAPE - 不要將反斜線視為跳脫字元(※筆者在Win環境下看不出差異)
GLOB_BRACE - 將 {a,b,c} 視為搜尋 'a', 'b', 或 'c'
GLOB_ONLYDIR - 只列出資料夾路徑
GLOB_ERR - 發生讀取錯誤時停止動作(像是無法讀取的資料夾),預設是「忽略錯誤」
應用範例:
//搜尋path資料夾中,所以資料夾的路徑,並在最後加上斜線"\"
$dirs = array_filter(glob('/path/*',GLOB_MARK), 'is_dir');
//同上的結果(所以資料夾的路徑),而且此方法比較標準效能也較快
//(※不同這邊要注意的是,GLOB_ONLYDIR僅適用於非使用GUN C library的系統
// 所以當不支援的時候,可以改用第一種方法)
$dirs = glob('/path/*',GLOB_ONLYDIR | GLOB_MARK);
//搜尋path資料夾中,所有的檔案的路徑
$files = array_filter(glob('/path/*'), 'is_file');
//搜尋path資料夾中所有檔名字串結尾為.gif、.jpg、.png檔案路徑
//(※這邊要注意,若副檔名大小寫不一樣,會搜尋不到,像.GIF、.gIf或.giF都會被忽略掉)
$images = glob("/path/{*.gif,*.jpg,*.png}", GLOB_BRACE);
//搜尋path資料夾中所有檔名字串結尾非"_s.jpg"檔案路徑
$filter = array_filter(glob('img/*'), function($ele){return !stristr($ele,'_s.jpg');});
//以遞迴的方式,取得深層資料夾的所有路徑
function listdirs($dir) {
static $alldirs = array();
$dirs = glob($dir . '/*', GLOB_ONLYDIR);
if (count($dirs) > 0) {
foreach ($dirs as $d) $alldirs[] = $d;
}
foreach ($dirs as $dir) listdirs($dir);
return $alldirs;
}
如何取得檔案名稱 不包含路徑:
basename (PHP3 , PHP4) basename --- 傳回不包含路徑的檔案名稱 語法 : string basename (string path) 說明 : 給予一個包含路徑的檔案名稱,此函式將會傳回不包含路徑的檔案名稱。 在Windows中路徑可以是斜線(/)或反斜線(\),在UNIX系統中路徑為斜線(/)。
範例Code:
$path = "/home/httpd/html/index.php3";
$file = basename ($path); // $file is set to "index.php3"