function scanDirectory($dir) {
// 打开目录
$handle = opendir($dir);
// 循环读取目录中的文件或子文件夹
while (false !== ($file = readdir($handle))) {
if ($file != '.' && $file != '..') {
$filePath = $dir . '/' . $file;
// 将文件名转换为正确的字符编码
$filePath = iconv('GBK', 'UTF-8', $filePath);
// 检查文件是否是文件夹
if (is_dir($filePath)) {
// 递归调用自身,扫描子文件夹
scanDirectory($filePath);
} else {
// 处理文件
echo $filePath . "\n";
}
}
}
// 关闭目录句柄
closedir($handle);
}
// 设置默认字符编码为UTF-8
mb_internal_encoding('UTF-8');
// 调用函数,并传入要扫描的目录路径
scanDirectory('path/to/directory');在上面的代码中,我们使用了iconv函数将文件路径转换为正确的字符编码。在示例中,我将输入的文件路径从GBK编码转换为UTF-8编码。你可以根据实际情况进行调整。
另外,我还添加了mb_internal_encoding函数来设置默认字符编码为UTF-8,以确保PHP正确处理中文字符。这样,你就可以在处理文件路径和文件名时正确地处理中文字符。
scanDirectory函数接受一个目录路径作为参数,并递归地遍历该目录及其子目录中的所有文件。在循环中,readdir函数用于读取目录中的文件和子文件夹。我们通过检查文件名是否为.或..来排除当前目录和上级目录。然后,我们构建文件的完整路径,并使用is_dir函数检查它是否是一个文件夹。如果是文件夹,我们递归地调用scanDirectory函数来扫描子文件夹。如果是文件,我们进行相应的处理,这里只是简单地打印文件路径,你可以根据需要进行其他操作。
请记得将 'path/to/directory' 替换为你要遍历的实际目录路径。
版权声明:本文发布于与老涂一起写代码 内容均来源于互联网 如有侵权联系删除

快来评论,快来抢沙发吧~