PHP遍历目录获取文件名 无限深度的目录【转】

// $path : path to browse
// $maxdepth : how deep to browse (-1=unlimited)
// $mode : "FULL"|"DIRS"|"FILES"
// $d : must not be defined
  
function searchdir ( $path , $maxdepth = -1 , $mode = "FULL" , $d = 0 )
{
   if ( substr ( $path , strlen ( $path ) - 1 ) != '/' ) { $path .= '/' ; }      
   $dirlist = array () ;
   if ( $mode != "FILES" ) { $dirlist[] = $path ; }
   if ( $handle = opendir ( $path ) )
   {
       while ( false !== ( $file = readdir ( $handle ) ) )
       {
           if ( $file != '.' && $file != '..' )
           {
               $file = $path . $file ;
               if ( ! is_dir ( $file ) ) { if ( $mode != "DIRS" ) { $dirlist[] = $file ; } }
               elseif ( $d >=0 && ($d < $maxdepth || $maxdepth < 0) )
               {
                   $result = searchdir ( $file . '/' , $maxdepth , $mode , $d + 1 ) ;
                   $dirlist = array_merge ( $dirlist , $result ) ;
               }
       }
       }
       closedir ( $handle ) ;
   }
   if ( $d == 0 ) { natcasesort ( $dirlist ) ; }
   return ( $dirlist ) ;
}

 

 

DirectoryIterator和RecursiveDirectoryIterator php5中的目录迭代类

DirectoryIterator获取指定目录的文件或者目录.

RecursiveDirectoryIterator 获取目录下所有的文件,包括子目录

--------------------------------------------------------------------------------------------------

$it = new RecursiveDirectoryIterator("./protected"); foreach(new RecursiveIteratorIterator($it) as $file) {echo $file . "<br>";}

------------------------------------------------------------------------------------------------------------

$path = "./protected/controllers/";  $objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)); 
foreach($objects as $object)  {     $arrFile[] = $object;  } 
print_r($arrFile);

--------------------------------------------------------------------------------------------------------------

posted on 2013-02-26 09:43  ellisonDon  阅读(2227)  评论(0编辑  收藏  举报

导航