php glob實現目錄檔案遍曆與尋找與模式比對的檔案路徑

來源:互聯網
上載者:User

一,函數原型
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
)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.