PHP 使用 glob 搜尋所有檔案路徑

/**
02.* 在使用之前,我們先大致了解一下glob有什麼特別的參數可以使用。
03.*
04.* GLOB_MARK     - 若檔案為資料夾,在回傳檔案路徑的最後面加上斜線""
05.* GLOB_NOSORT   - 保持檔案路徑在原資料夾的出現順序(不重新排序)。※筆者在Win環境看不出差異
06.* GLOB_NOCHECK  - 若找不到匹配的檔案路徑,回傳匹配的條件字串
07.* GLOB_NOESCAPE - 不要將反斜線視為跳脫字元(※筆者在Win環境下看不出差異)
08.* GLOB_BRACE    - 將 {a,b,c} 視為搜尋 'a', 'b', 或 'c'
09.* GLOB_ONLYDIR  - 只列出資料夾路徑
10.* GLOB_ERR      - 發生讀取錯誤時停止動作(像是無法讀取的資料夾),預設是「忽略錯誤」
11.**/
01.// 搜尋 path 資料夾中,所以資料夾的路徑,並在最後加上斜線 ""
02.$dirs array_filter(glob('/path/*',GLOB_MARK), 'is_dir');
03. 
04.// 同上的結果(所以資料夾的路徑),而且此方法比較標準效能也較快
05.// (※不同這邊要注意的是,GLOB_ONLYDIR 僅適用於非使用 GUN C library 的系統
06.// 所以當不支援的時候,可以改用第一種方法)
07.$dirs glob('/path/*',GLOB_ONLYDIR | GLOB_MARK);
08. 
09.// 搜尋path資料夾中,所有的檔案的路徑
10.// (※筆者很好奇,=3=既然都有 GLOB_ONLYDIR 了,為什麼不多個 GLOB_ONLYFILE )
11.$files array_filter(glob('/path/*'), 'is_file');
12. 
13.// 搜尋 path 資料夾中所有檔名字串結尾為 .gif、.jpg、.png 檔案路徑
14.//(※這邊要注意,若副檔名大小寫不一樣,會搜尋不到,像 .GIF 、 .gIf 或 .giF 都會被忽略掉)
15.$images glob("/path/{*.gif,*.jpg,*.png}", GLOB_BRACE);
16. 
17.// 搜尋 path 資料夾中所有檔名字串結尾非 "_s.jpg" 檔案路徑
18.$filter array_filter(glob('img/*'), function($ele){return !stristr($ele,'_s.jpg');});
19. 
20.// 搜尋 path 中所有含有 views 資料夾的資料夾
21.$dirs glob('/path/*/views', GLOB_ONLYDIR);
22. 
23.//以遞迴的方式,取得深層資料夾的所有路徑
24.function listdirs($dir) {
25.static $alldirs array();
26.$dirs glob($dir '/*', GLOB_ONLYDIR);
27.if (count($dirs) > 0) {
28.foreach ($dirs as $d$alldirs[] = $d;
29.}
30.foreach ($dirs as $dir) listdirs($dir);
31.return $alldirs;
32.}

轉自
http://liaosankai.pixnet.net/blog/post/29021189-%E4%BD%BF%E7%94%A8-glob-%E6%90%9C%E5%B0%8B%E6%89%80%E6%9C%89%E6%AA%94%E6%A1%88%E8%B7%AF%E5%BE%91

如果文章對您很有幫助
請我喝杯咖啡吧

Bitcoin 比特幣錢包:

38ieWXhURt27br9XrDoCeo4eruzKyi8QKs



ann71727

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料