当前位置:首页 > PHP教程 > php文件操作 > 列表

php读出目录下的所有目录及子目录下文件

发布:smiling 来源: PHP粉丝网  添加日期:2014-08-02 10:43:30 浏览: 评论:0 

一个利用php读出目录下的所有目录及子目录下文件的代码,很简单方便的第一个就是读取一级目录,后面可以无限目录读取,实例代码如下:

  1. <?php 
  2. $dirname=@opendir("abc")or die("打开目录不成功<br>"); 
  3.  
  4. readdir($dirname)."<br>"
  5.  
  6. readdir($dirname)."<br>"
  7. while(($filess=readdir($dirname))!=false) 
  8.  
  9.   if(is_dir("abc/".$filess)) 
  10.  { 
  11.    
  12.     echo "目录:".$filess."<br>"
  13.  
  14.     } 
  15.    else 
  16.  { 
  17.     
  18.      echo "文件:".$filess."<br>"
  19.    } 
  20.  
  21. closedir($dirname); 
  22.  
  23. ?> 

只能读出html文件名,读不出abc目录下的目录名,下面我们再看一实例,实例代码如下:

  1. <?php   
  2. /*  
  3. *   递归获取指定路径下的所有文件或匹配指定正则的文件(不包括“.”和“..”),结果以数组形式返回  
  4. *   @param  string  $dir  
  5. *   @param  string  [$pattern]  
  6. *   @return array  
  7. */   
  8. function file_list($dir,$pattern="")   
  9. {   
  10.     $arr=array();   
  11.     $dir_handle=opendir($dir);   
  12.     if($dir_handle)   
  13.     {   
  14.         // 这里必须严格比较,因为返回的文件名可能是“0”    
  15.         while(($file=readdir($dir_handle))!==false)   
  16.         {   
  17.             if($file==='.' || $file==='..')   
  18.             {   
  19.                 continue;   
  20.             }   
  21.             $tmp=realpath($dir.'/'.$file);   
  22.             if(is_dir($tmp))   
  23.             {   
  24.                 $retArr=file_list($tmp,$pattern);   
  25.                 if(!emptyempty($retArr))   
  26.                 {   
  27.                     $arr[]=$retArr;   
  28.                 }   
  29.             }   
  30.             else   
  31.             {   
  32.                 if($pattern==="" || preg_match($pattern,$tmp))   
  33.                 {   
  34.                     $arr[]=$tmp;   
  35.                 }   
  36.             }   
  37.         }   
  38.         closedir($dir_handle);   
  39.     }   
  40.     return $arr;   
  41. }   
  42.    
  43. // 列出网站根目录下所有以".php"扩展名(不区分大小写)结尾的文件    
  44. echo '<pre>';   
  45. print_r(file_list($_SERVER['DOCUMENT_ROOT'],"//.php$/i"));   
  46. echo '</pre>';   
  47. ?> 

Tags: php读出目录 所有目录

分享到: