遍历文件夹中所有文件的php代码

在日常的php编程中,有时需要遍历文件夹及子文件夹中的所有文件,多数情况下,无非就是使用递归。

收藏两个 php 文件夹遍历的代码。
代码1:
<html>
     <body>
         <?php
             function traverse($path = '.') {
                 $current_dir = opendir($path);    //opendir()返回一个目录句柄,失败返回false
                 while(($file = readdir($current_dir)) !== false) {    //readdir()返回打开目录句柄中的一个条目
                     $sub_dir = $path . DIRECTORY_SEPARATOR . $file;    //构建子目录路径
                     if($file == '.' || $file == '..') {
                         continue;
                     } else if(is_dir($sub_dir)) {    //如果是目录,进行递归
                         echo 'Directory ' . $file . ':<br>';
                         traverse($sub_dir);
                     } else {    //如果是文件,直接输出
                         echo 'File in Directory ' . $path . ': ' . $file . '<br>';
                     }
                 }
             }
             
             traverse('xxtt');
         ?>
     </body>
 </html>

代码2:
<?php
/**
 * 递归查找目录下所有文件。
 * site: http://www.jbxue.com
 */
function scanfiles($dirs,$path='',$root,&$files,&$options){
    if($dirs==false){
        return ;
    }
    foreach($dirs as $val){
        if($val=='.' || $val=='..' || in_array($val,$options['exclude'])){
            continue;
        }
        if(is_file($root.'/'.$path.$val)){
            $files[]['name']=$path.$val;
        }elseif(is_dir($root.'/'.$path.$val)){
            if(empty($path)){
                $nextpath=$val.'/';
            }else{
                $nextpath=$path.$val.'/';
            }
            $dir=$root.'/'.$nextpath;
            scanfiles(@scandir($dir),$nextpath,$root,$files,$options);
        }
    }
}

你可能感兴趣的:(递归,遍历)