採用PHP函式glob實現尋找與模式匹配的檔案路徑

2021-06-16 07:06:42 字數 1971 閱讀 8958

採用php函式glob實現尋找與模式匹配的檔案路徑,主要討論glob()函式的作用和用法。

在開發過程中,有時候需要在目錄中匹配某一類檔案和目錄,如字尾為.txt或.ini等檔案,如果採用普通方案如讀取目錄然後使用strpos()函式進行查詢,速度很慢(如果目錄下檔案很多),而且匹配的策略也非常不靈活,glob()函式依照libc glob() 函式使用的規則尋找所有與pattern匹配的檔案路徑,類似於一般shells所用的規則一樣,但不進行縮寫擴充套件或引數替代。採用glob()函式只需要實現乙個匹配規則就可以獲取到所需要的檔案和目錄。簡單來說glob()函式是乙個獲取檔案和目錄的函式。

一,函式原型

array glob ( string pattern [, int flags] )

注意:glob()函式獲取的是乙個陣列,其返回乙個包含有匹配檔案/目錄的陣列。如果出錯返回false

二,版本相容

php 4 >= 4.3.0, php 5

三,函式的基礎用法與例項

1,匹配目錄下.txt字尾的檔案

<?php 

foreach (glob("*.txt") as $filename)

?>

2,實現相容大小寫匹配

<?php 

$pattern = sql_case("*.pdf");

var_dump(glob($pattern));

?>

類似如下

<?php 

foreach (array_merge(glob("*.pdf"),glob("*.pdf")) as $filename)

?>

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

<?php 

function listdirs($dir)

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'

(6)glob_onlydir - 僅返回與模式匹配的目錄項 注意: 在 php 4.3.3 版本之前 glob_onlydir 在 windows 或者其它不使用 gnu c 庫的系統上不可用。

(7)glob_err - 停止並讀取錯誤資訊(比如說不可讀的目錄),預設的情況下忽略所有錯誤 注意: glob_err 是 php 5.1 新增的。

glob()函式的典型應用是讀取資料表檔案,如獲取某個目錄下的.sql字尾檔案,這種在單元測試中非常實用,可實現讀取sql檔案重建資料庫等

php使用glob函式快速查詢指定目錄檔案的方法

php搜尋當前目錄所有檔案,如下 複製 如下 array glob print r array array 0 1.php 1 10.php 2 11.php cymatqfnbsp 3 2.asp 4 3.asp 5 4.aspx 6 5.html 7 6.php 8 7.php 9 8.php ...

PHP使用glob函式遍歷目錄或資料夾的方法

一說到php遍歷目錄我們很多朋友會想到是opendir與readdir,這樣就可以遍歷目錄並顯示檔案,但在php中有乙個更簡潔的遍歷目錄的函式glob估計很少有人知道此函式,不過我覺得比起opendir與readdir要簡單多了.php glob函式的使用 glob 尋找與模式匹配的檔案路徑.例子,...

MSSQL 採用pivot函式實現動態行轉列

環境要求 2005 在日常需求中常常會有行轉列的事情需求處理。假設不是動態的行,那麼我們能夠採取case when 羅列處理。在sql 2005曾經處理動態行或列的時候,通常採用拼接字串的方法處理。在2005以後新增了pivot函式之後,我能夠利用這樣函式來處理。1.動態sql注入式推斷函式 既然是...