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' 替换为你要遍历的实际目录路径。
版权声明:本文发布于与老涂一起写代码 内容均来源于互联网 如有侵权联系删除
快来评论,快来抢沙发吧~