一,函數原型
array glob ( string pattern [, int flags] )
注意:glob()函數擷取的是一個數組,其返回一個包含有匹配檔案/目錄的數組。如果出錯返回FALSE
二,版本相容
PHP 4 >= 4.3.0, PHP 5
三,函數的基礎用法與執行個體
1,匹配目錄下.txt尾碼的檔案
| 代碼如下 |
複製代碼 |
<?php foreach (glob("*.txt") as $filename) { echo $filename; } ?> |
2,實現相容大小寫匹配
| 代碼如下 |
複製代碼 |
<?php $pattern = sql_case("*.pdf"); var_dump(glob($pattern)); ?> |
類似如下
| 代碼如下 |
複製代碼 |
<?php foreach (array_merge(glob("*.pdf"),glob("*.PDF")) as $filename) { echo "$filename n"; } ?> |
3,擷取目錄下的所有子目錄
| 代碼如下 |
複製代碼 |
<?php 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,匹配所有檔案
| 代碼如下 |
複製代碼 |
<?php $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 <?php print_r(glob("*.txt")); ?>輸出類似: Array ( [0] => target.txt [1] => source.txt [2] => test.txt [3] => test2.txt )例子 2 <?php 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 ) |