在开发一个web应用程序时,有时候需要对一组文件进行批量处理,这时候就会用到文件匹配功能。PHP中提供了glob函数,可以快速方便地定位到符合我们要求的文件。
一、glob函数的基本使用
glob函数返回符合规则的文件数组。其中第一个参数$pattern为规则,可以包含通配符“*”和“?”。
$files = glob("path/to/files/*.txt"); print_r($files);
上面的代码会返回path/to/files/目录下的所有txt文件的文件名数组。
二、通配符的使用
通配符“*”代表任意个任意字符。例如下面的代码会返回path/to/files/目录下的所有txt和html文件的文件名数组。
$files = glob("path/to/files/*.{txt,html}", GLOB_BRACE); print_r($files);
通配符“?”代表一个任意字符。例如下面的代码会返回path/to/files/目录下的所有t开头的txt文件名数组。
$files = glob("path/to/files/t*.txt"); print_r($files);
三、目录遍历的使用
除了使用通配符匹配一组文件外,我们还可以使用glob函数遍历一个目录树。例如下面的代码会返回path/to/files/目录及其子目录下的所有txt文件的文件名数组。
$files = glob("path/to/files/**/*.txt", GLOB_BRACE); print_r($files);
注意这里的“**”表示任意层级的子目录。
四、实际应用示例
下面是一个实际应用示例,我们将选择所有在指定目录下的图片文件,然后删除这些文件。
$dir = "path/to/images/"; $files = glob($dir . "*.{jpg,jpeg,png,gif}", GLOB_BRACE); foreach ($files as $file) { if (is_file($file)) { unlink($file); } }
上面的代码首先使用glob函数选择符合jpg、jpeg、png、gif格式的所有文件,然后使用foreach遍历这些文件,使用is_file函数判断是否为文件,最后使用unlink函数删除这些文件。
五、总结
glob函数是一个非常实用的函数,在文件处理中起到很大的作用。但是,由于glob函数是基于文件系统的,所以在处理大量文件时需要注意性能问题。