採用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注入式推斷函式 既然是...