PHP 获取目录中所有文件和文件夹289


在 PHP 中,获取目录中所有文件和文件夹有几种方法,本文将介绍两种最常用和最强大的方法:使用 `scandir()` 函数和 `glob()` 函数。

使用 `scandir()` 函数

`scandir()` 函数可用于获取指定目录中的所有文件和目录。它返回一个包含文件和目录名称的数组。以下是使用方法:```php
$directory = 'path/to/directory';
$files = scandir($directory);
print_r($files);
```

这将以数组形式打印目录中的所有文件和目录,如下所示:```
Array
(
[0] => .
[1] => ..
[2] =>
[3] =>
[4] => images
[5] => css
)
```

请注意,`scandir()` 函数还返回当前目录(`.`)和父目录(`..`),因此通常需要使用 `array_filter()` 函数来删除它们:```php
$directory = 'path/to/directory';
$files = array_filter(scandir($directory), function($file) {
return !in_array($file, ['.', '..']);
});
print_r($files);
```

使用 `glob()` 函数

`glob()` 函数可用于查找与指定模式匹配的文件和目录。它返回一个包含匹配文件的路径的数组。以下是使用方法:```php
$directory = 'path/to/directory';
$files = glob($directory . '/*');
print_r($files);
```

这将以数组形式打印目录中所有文件和目录的路径,如下所示:```
Array
(
[0] => path/to/directory/
[1] => path/to/directory/
[2] => path/to/directory/images
[3] => path/to/directory/css
)
```

与 `scandir()` 函数不同,`glob()` 函数不会返回当前目录或父目录,因为它使用模式匹配来筛选文件。

递归获取所有文件和文件夹

要递归获取目录及其子目录中的所有文件和文件夹,可以使用以下方法之一:
使用 `RecursiveIteratorIterator` 类:

```php
$directory = 'path/to/directory';
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory));
foreach ($iterator as $file) {
echo $file->getPathname() . PHP_EOL;
}
```

使用 `glob()` 函数与递归:

```php
$directory = 'path/to/directory';
$files = glob($directory . '/*');
foreach ($files as $file) {
if (is_dir($file)) {
$subfiles = glob($file . '/*');
print_r($subfiles);
} else {
echo $file . PHP_EOL;
}
}
```

这些方法将递归地获取目录及其所有子目录中的所有文件和文件夹。

在 PHP 中获取目录中的所有文件和文件夹有多种方法,包括使用 `scandir()` 函数和 `glob()` 函数。这些函数提供了获取文件和文件夹列表的灵活性和强大功能,以便进一步处理或显示。

2024-11-05


上一篇:**深入浅出:PHP 数组键**

下一篇:PHP 获取文件修改时间