下面是详细讲解“PHP简单实现遍历目录下特定文件的方法小结”的完整攻略,包括实现步骤和示例说明。
1. 利用PHP函数遍历目录
PHP提供了 scandir()
和 glob()
两个函数可以遍历目录。其中,scandir()
返回指定目录中的文件和目录的数组,glob()
则返回匹配指定模式的文件名数组。
具体实现代码如下:
// 遍历目录下的文件名和子目录名
function listDirFiles($dirpath){
$files = array();
if(is_dir($dirpath)) {
if ($handle = opendir($dirpath)) {
while (($file = readdir($handle)) !== false) {
if($file == '.' || $file == '..') {
continue;
}
$file = $dirpath.'/'.$file;
if(is_file($file)) {
$files[] = $file;
} else {
$files = array_merge($files, listDirFiles($file));
}
}
closedir($handle);
}
}
return $files;
}
// 利用 `scandir()` 函数遍历目录下的文件和子目录名
function listDirFiles2($dirpath){
$files = array();
foreach (scandir($dirpath) as $file) {
if ($file == '.' || $file == '..') {
continue;
}
$file = $dirpath.'/'.$file;
if (is_file($file)) {
$files[] = $file;
} else {
$files = array_merge($files, listDirFiles2($file));
}
}
return $files;
}
// 利用 `glob()` 函数遍历目录下的文件
function listDirFiles3($dirpath){
$files = array();
foreach (glob($dirpath.'/*.{jpg,png,gif}', GLOB_BRACE) as $file) {
if(is_file($file)) {
$files[] = $file;
}
}
return $files;
}
2. 根据后缀名匹配文件名并返回
在实际开发中,我们通常需要根据特定的文件名后缀来筛选对应的文件。这里我们可以通过正则表达式或 PHP 内置函数 pathinfo()
来提取文件名后缀。
具体实现代码如下:
// 利用 `pathinfo()` 函数获取文件名后缀,再匹配特定后缀
function listDirFiles4($dirpath, $ext=array()){
$files = array();
foreach (scandir($dirpath) as $file) {
if ($file == '.' || $file == '..') {
continue;
}
$file = $dirpath.'/'.$file;
if (is_file($file)) {
$info = pathinfo($file);
if(isset($info['extension']) && in_array($info['extension'], $ext)){
$files[] = $file;
}
} else {
$files = array_merge($files, listDirFiles4($file, $ext));
}
}
return $files;
}
// 利用正则表达式匹配后缀名
function listDirFiles5($dirpath, $ext=array()){
$files = array();
foreach (scandir($dirpath) as $file) {
if ($file == '.' || $file == '..') {
continue;
}
$file = $dirpath.'/'.$file;
if (is_file($file)) {
if(preg_match('/\.('.implode('|', $ext).')$/i', $file)){
$files[] = $file;
}
} else {
$files = array_merge($files, listDirFiles5($file, $ext));
}
}
return $files;
}
3. 示例说明
示例1:遍历目录下所有文件
假如我们有一个目录 mydir
,其中包含若干层子目录和各种类型的文件。我们需要遍历该目录下所有的文件,可以使用如下代码:
$dirpath = 'mydir';
$files = listDirFiles($dirpath);
print_r($files);
示例2:遍历目录下特定类型的文件
假如我们只需要遍历目录下所有名字后缀为 jpg、png 和 gif 的文件,可以使用如下代码:
$dirpath = 'mydir';
$ext = array('jpg', 'png', 'gif');
$files = listDirFiles4($dirpath, $ext);
print_r($files);
以上就是“PHP简单实现遍历目录下特定文件的方法小结”的完整攻略了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP简单实现遍历目录下特定文件的方法小结 - Python技术站