請選擇 進入手機版 | 繼續訪問電腦版
搜索
熱搜: 活動 交友 discuz
查看: 3922|回復: 0

[PHP] [PHP] glob 函數參數進階應用 - 只列資料夾|遞迴取得子資料夾|檔名不含路徑

[複製鏈接]
發表於 2014-2-7 19:01:24 | 顯示全部樓層 |閱讀模式
在使用之前,我們先大致了解一下glob有什麼特別的參數可以使用。
  1. GLOB_MARK     - 若檔案為資料夾,在回傳檔案路徑的最後面加上斜線"\"
  2. GLOB_NOSORT   - 保持檔案路徑在原資料夾的出現順序(不重新排序)。※筆者在Win環境看不出差異
  3. GLOB_NOCHECK  - 若找不到匹配的檔案路徑,回傳匹配的條件字串
  4. GLOB_NOESCAPE - 不要將反斜線視為跳脫字元(※筆者在Win環境下看不出差異)
  5. GLOB_BRACE    - 將 {a,b,c} 視為搜尋 'a', 'b', 或 'c'
  6. GLOB_ONLYDIR  - 只列出資料夾路徑
  7. GLOB_ERR      - 發生讀取錯誤時停止動作(像是無法讀取的資料夾),預設是「忽略錯誤」
複製代碼


應用範例:
  1. //搜尋path資料夾中,所以資料夾的路徑,並在最後加上斜線"\"
  2. $dirs = array_filter(glob('/path/*',GLOB_MARK), 'is_dir');

  3. //同上的結果(所以資料夾的路徑),而且此方法比較標準效能也較快
  4. //(※不同這邊要注意的是,GLOB_ONLYDIR僅適用於非使用GUN C library的系統
  5. // 所以當不支援的時候,可以改用第一種方法)
  6. $dirs = glob('/path/*',GLOB_ONLYDIR | GLOB_MARK);

  7. //搜尋path資料夾中,所有的檔案的路徑
  8. $files = array_filter(glob('/path/*'), 'is_file');

  9. //搜尋path資料夾中所有檔名字串結尾為.gif、.jpg、.png檔案路徑
  10. //(※這邊要注意,若副檔名大小寫不一樣,會搜尋不到,像.GIF、.gIf或.giF都會被忽略掉)
  11. $images = glob("/path/{*.gif,*.jpg,*.png}", GLOB_BRACE);

  12. //搜尋path資料夾中所有檔名字串結尾非"_s.jpg"檔案路徑
  13. $filter = array_filter(glob('img/*'), function($ele){return !stristr($ele,'_s.jpg');});

  14. //以遞迴的方式,取得深層資料夾的所有路徑
  15. function listdirs($dir) {
  16.     static $alldirs = array();
  17.     $dirs = glob($dir . '/*', GLOB_ONLYDIR);
  18.     if (count($dirs) > 0) {
  19.         foreach ($dirs as $d) $alldirs[] = $d;
  20.     }
  21.     foreach ($dirs as $dir) listdirs($dir);
  22.     return $alldirs;
  23. }
複製代碼


如何取得檔案名稱 不包含路徑:

basename

(PHP3 , PHP4)

basename --- 傳回不包含路徑的檔案名稱

語法 : string basename (string path)

說明 :

給予一個包含路徑的檔案名稱,此函式將會傳回不包含路徑的檔案名稱。

在Windows中路徑可以是斜線(/)或反斜線(\),在UNIX系統中路徑為斜線(/)。
  1. $path = "/home/httpd/html/index.php3";
  2. $file = basename ($path); // $file is set to "index.php3"
複製代碼
[PHP] glob 函數參數進階應用 – 只列資料夾 | 遞迴取得子資料夾 | 檔名不含路徑
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

本論壇為非營利之網路平台,所有文章內容均為網友自行發表,不代表論壇立場!若涉及侵權、違法等情事,請告知版主處理。


Page Rank Check

廣告刊登  |   交換連結  |   贊助我們  |   服務條款  |   免責聲明  |   客服中心  |   中央分站

手機版|中央論壇

GMT+8, 2019-9-20 09:08 , Processed in 0.056148 second(s), 17 queries .

Powered by Discuz!

© 2005-2015 Copyrights. Set by YIDAS

快速回復 返回頂部 返回列表