分享

php获取某一目录包含的所有目录和文件

 yliu277 2015-11-02
  1. <?php  
  2. /** 
  3.  * 取得输入目录所包含的所有目录和文件 
  4.  * 以关联数组形式返回 
  5.  * author: flynetcn 
  6.  */  
  7. function deepScanDir($dir)  
  8. {  
  9.     $fileArr = array();  
  10.     $dirArr = array();  
  11.     $dir = rtrim($dir, '//');  
  12.     if(is_dir($dir)){  
  13.         $dirHandle = opendir($dir);  
  14.         while(false !== ($fileName = readdir($dirHandle))){  
  15.             $subFile = $dir . DIRECTORY_SEPARATOR . $fileName;  
  16.             if(is_file($subFile)){  
  17.                 $fileArr[] = $subFile;  
  18.             } elseif (is_dir($subFile) && str_replace('.', '', $fileName)!=''){  
  19.                 $dirArr[] = $subFile;  
  20.                 $arr = deepScanDir($subFile);  
  21.                 $dirArr = array_merge($dirArr, $arr['dir']);  
  22.                 $fileArr = array_merge($fileArr, $arr['file']);  
  23.             }  
  24.         }  
  25.         closedir($dirHandle);  
  26.     }  
  27.     return array('dir'=>$dirArr, 'file'=>$fileArr);  
  28. }  
  29. //示例  
  30. $dir = '/var/htdocs/w4/article';  
  31. $arr = deepScanDir($dir);  
  32. print_r($arr);  
  33.   
  34.   
  35. /** 
  36.  * 取得输入目录所包含的所有文件 
  37.  * 以数组形式返回 
  38.  * author: flynetcn 
  39.  */  
  40. function get_dir_files($dir)  
  41. {  
  42.     if (is_file($dir)) {  
  43.         return array($dir);  
  44.     }  
  45.     $files = array();  
  46.     if (is_dir($dir) && ($dir_p = opendir($dir))) {  
  47.         $ds = DIRECTORY_SEPARATOR;  
  48.         while (($filename = readdir($dir_p)) !== false) {  
  49.             if ($filename=='.' || $filename=='..') { continue; }  
  50.             $filetype = filetype($dir.$ds.$filename);  
  51.             if ($filetype == 'dir') {  
  52.                 $files = array_merge($files, get_dir_files($dir.$ds.$filename));  
  53.             } elseif ($filetype == 'file') {  
  54.                 $files[] = $dir.$ds.$filename;  
  55.             }  
  56.         }  
  57.         closedir($dir_p);  
  58.     }  
  59.     return $files;  
  60. }  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约