# PHP目录遍历实例:轻松掌握使用代码遍历文件夹及文件的方法
在PHP中,目录遍历是一个常见的需求,无论是用于文件的上传下载、备份恢复,还是其他需要处理文件系统的场景。以下,我将详细介绍如何在PHP中实现目录遍历,并提供一些实用的实例代码。
## 1. 使用`scandir()`函数
`scandir()`是PHP中用来遍历目录的内置函数之一。它返回指定目录中的文件和目录列表,并以关联数组的形式返回。
### 1.1 基本用法
```php
$dir = './example';
$files = scandir($dir);
foreach ($files as $key => $value) {
// Skip '.' and '..'
if ($value == '.' || $value == '..') {
unset($files[$key]);
continue;
}
echo $value . "<br>";
}
这段代码将遍历当前目录(./example)下的所有文件和文件夹,并排除.和..这两个特殊目录。
1.2 遍历子目录
如果需要遍历子目录,可以使用递归函数。
function scandir_recursive($dir) {
$files = scandir($dir);
foreach ($files as $key => $value) {
if ($value == '.' || $value == '..') {
unset($files[$key]);
continue;
}
$path = realpath($dir . DIRECTORY_SEPARATOR . $value);
if (is_dir($path)) {
scandir_recursive($path);
}
}
}
scandir_recursive('./example');
在这个例子中,我们定义了一个名为scandir_recursive的函数,它将递归地遍历给定目录下的所有文件和文件夹。
2. 使用glob()函数
glob()函数用于查找匹配指定模式的文件路径列表。它比scandir()更加灵活。
2.1 基本用法
$pattern = './example/*';
$files = glob($pattern);
foreach ($files as $file) {
echo $file . "<br>";
}
在这个例子中,glob()函数会查找./example目录下所有的文件。
2.2 遍历子目录
$pattern = './example/{,.*/}';
$files = glob($pattern);
foreach ($files as $file) {
echo $file . "<br>";
}
这个例子使用了一个更复杂的模式来匹配包含子目录的路径。
3. 总结
通过以上两个实例,我们可以看到在PHP中实现目录遍历有几种不同的方法。scandir()函数简单直接,而glob()函数则提供了更多的灵活性。根据你的具体需求,你可以选择最合适的方法来实现目录遍历。
希望这篇文章能够帮助你更好地理解PHP中的目录遍历。如果你有任何问题或需要进一步的帮助,请随时提出。
