PHP中的glob()是一個(gè)功能強(qiáng)大的函數(shù),它用于檢索與指定模式匹配的文件路徑,返回符合條件的路徑數(shù)組。該函數(shù)簡(jiǎn)單易用,常見(jiàn)的用法是用于讀取某個(gè)目錄下的所有文件,或者按照特定的模式讀取指定的文件。
下面是一個(gè)簡(jiǎn)單的例子,用于讀取指定目錄下所有的PNG格式的圖片:
$files = glob('/path/to/dir/*.png'); foreach ($files as $file) { echo $file; }
在上面的代碼中,我們使用了通配符“*”代表任意文件名,而“.png”則代表了文件類(lèi)型,該函數(shù)會(huì)返回所有符合這個(gè)模式的文件路徑數(shù)組。
除了使用通配符以外,我們還可以使用別的符號(hào)來(lái)匹配文件名,如下所示:
- “?”代表任意單個(gè)字符
- “[ ]”代表字符集合,如“[abc]”表示字符a,b,c中的任一字符
- “{ }”代表多選結(jié)構(gòu),如“{html,htm,php}”表示三個(gè)文件類(lèi)型中的任一種
下面是一個(gè)使用了這些符號(hào)的例子,用于讀取指定目錄下所有的html或者php文件:
$files = glob('/path/to/dir/*.{html,php}', GLOB_BRACE); foreach ($files as $file) { echo $file; }
在上面的代碼中,我們使用了“{}”同事匹配html和php兩種文件類(lèi)型,同時(shí)將第二個(gè)參數(shù)設(shè)置為GLOB_BRACE,表示使用了這個(gè)特定的匹配方式。
除了常見(jiàn)的文件匹配以外,glob()函數(shù)還可以用于查找符合某個(gè)時(shí)間范圍內(nèi)修改時(shí)間的文件,如下所示:
$files = glob('/path/to/dir/*', GLOB_ERR | GLOB_BRACE); foreach ($files as $file) { $mod_time = filemtime($file); if ($mod_time >strtotime('2019-01-01') && $mod_time< strtotime('2020-01-01')) { echo $file; } }
在上面的代碼中,我們?cè)O(shè)置了第二個(gè)參數(shù)為GLOB_ERR和GLOB_BRACE,表示使用了錯(cuò)誤處理和多選結(jié)構(gòu)匹配方式,在foreach循環(huán)中,我們使用了filemtime()函數(shù)獲取了每個(gè)文件的修改時(shí)間,然后判斷是否在指定的時(shí)間范圍內(nèi),返回符合條件的文件列表。
總之,glob()函數(shù)提供了豐富的文件匹配功能,可以輕松的檢索符合指定條件的文件,是PHP開(kāi)發(fā)者必備的工具之一。