程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php glob實現目錄文件遍歷與尋找與模式匹配的文件路徑

php glob實現目錄文件遍歷與尋找與模式匹配的文件路徑

編輯:關於PHP編程

采用PHP函數glob實現尋找與模式匹配的文件路徑,主要討論glob()函數的作用和用法,利用glob函數讀取目錄比其它的要快N倍,因為glob函數是內置函數處理起來自然要快。  

一,函數原型
array glob ( string pattern [, int flags] )
注意:glob()函數獲取的是一個數組,其返回一個包含有匹配文件/目錄的數組。如果出錯返回FALSE

二,版本兼容
PHP 4 >= 4.3.0, PHP 5

三,函數的基礎用法與實例

1,匹配目錄下.txt後綴的文件


 

 代碼如下 復制代碼 $pattern = sql_case("*.pdf");
var_dump(glob($pattern));
?>


類似如下


 

 代碼如下 復制代碼 foreach (array_merge(glob("*.pdf"),glob("*.PDF")) as $filename) {
     echo "$filename n";
}
?>


3,獲取目錄下的所有子目錄


 

 代碼如下 復制代碼 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;
}
?>


4,匹配所有文件

 

 代碼如下 復制代碼 $files = glob('{,.}*', GLOB_BRACE);
?>


四,注意事項
1,不能作用於遠程文件,被檢查的文件必須通過服務器的文件系統訪問。
2,使用 glob("[myfolder]/*.txt")將不能匹配,解決方法為 glob("[myfolder]/*.txt"),注意[]字符應用。
3,其次是第二個參數flags有效標記說明
(1)GLOB_MARK - 在每個返回的項目中加一個斜線
(2)GLOB_NOSORT - 按照文件在目錄中出現的原始順序返回(不排序)
(3)GLOB_NOCHECK - 如果沒有文件匹配則返回用於搜索的模式
(4)GLOB_NOESCAPE - 反斜線不轉義元字符
(5)GLOB_BRACE - 擴充 {a,b,c} 來匹配 'a','b' 或 'c'
(6)GLOB_ONLYDIR - 僅返回與模式匹配的目錄項 注意: 在 PHP 4.3.3 版本之前 GLOB_ONLYDIR 在 Windows 或者其它不使用 GNU C 庫的系統上不可用。
(7)GLOB_ERR - 停止並讀取錯誤信息(比如說不可讀的目錄),默認的情況下忽略所有錯誤 注意: GLOB_ERR 是 PHP 5.1 添加的。

glob()函數的典型應用是讀取數據表文件,如獲取某個目錄下的.sql後綴文件,這種在單元測試中非常實用,可實現讀取sql文件重建數據庫等,具體請參與PHP手冊,請關注下一期PHP內置函數研究系列

其它參考

 

 代碼如下 復制代碼

例子 1
print_r(glob("*.txt"));
?>輸出類似:

Array
(
[0] => target.txt
[1] => source.txt
[2] => test.txt
[3] => test2.txt
)例子 2
print_r(glob("*.*"));
?>輸出類似:

Array
(
[0] => contacts.csv
[1] => default.php
[2] => target.txt
[3] => source.txt
[4] => tem1.tmp
[5] => test.htm
[6] => test.ini
[7] => test.php
[8] => test.txt
[9] => test2.txt
)


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved