袖白雪 发表于 2021-5-11 11:01:56

php获取目录下所有文件及目录-多种方法


//某个目录下的文件和文件夹
function getDirContent($path){
if(!is_dir($path)){
    return false;
}
//readdir方法
/* $dir = opendir($path);
$arr = array();
while($content = readdir($dir)){
    if($content != '.' && $content != '..'){
      $arr[] = $content;
    }
}
closedir($dir); */

//scandir方法
$arr = array();
$data = scandir($path);
foreach ($data as $value){
    if($value != '.' && $value != '..'){
      $arr[] = $value;
    }
}
return $arr;
}



下面介绍的三种方法,是获取某个目录下所有的目录(包括子目录,子孙目录)和文件,直到最里层

function searchDir($path,&$files){

if(is_dir($path)){

    $opendir = opendir($path);

    while ($file = readdir($opendir)){
      if($file != '.' && $file != '..'){
      searchDir($path.'/'.$file, $files);
      }
    }
    closedir($opendir);
}
if(!is_dir($path)){
    $files[] = $path;
}
}
//得到目录名
function getDir($dir){
$files = array();
searchDir($dir, $files);
return $files;
}
$filenames = getDir('lss');

foreach ($filenames as $value){
echo $value.'<br/>';
}

function getDir($path){

if(is_dir($path)){

    $dir = scandir($path);
    foreach ($dir as $value){
      $sub_path =$path .'/'.$value;
      if($value == '.' || $value == '..'){
      continue;
      }else if(is_dir($sub_path)){
      echo '目录名:'.$value .'<br/>';
      getDir($sub_path);
      }else{
      //.$path 可以省略,直接输出文件名
      echo ' 最底层文件: '.$path. ':'.$value.' <hr/>';
      }
    }
}
}
$path = 'lss';
getDir($path);

function getDir($path){
$arr = array();
    $arr[] = $path;
if(is_file($path)){

}else{
    if(is_dir($path)){
      $data = scandir($path);
      if(!empty($data)){
      foreach ($data as $value){
          if($value != '.' && $value != '..'){
            $sub_path = $path."/".$value;
            $temp = getDirContent($sub_path);
            $arr = array_merge($temp,$arr);
          }         
      }

      }
    }
}

return $arr;
}
$path = 'lss';
var_dump(getDir($path));
页: [1]
查看完整版本: php获取目录下所有文件及目录-多种方法