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

PHP遍历文件夹与文件类及处理类用法实例

发布:smiling 来源: PHP粉丝网  添加日期:2021-04-14 11:06:14 浏览: 评论:0 

这篇文章主要介绍了PHP遍历文件夹与文件类及处理类用法实例,包括了文件及文件夹的遍历以及清除utf8的bom头方法,非常实用,需要的朋友可以参考下

本文实例讲述了PHP遍历文件夹与文件类及处理类用法,非常具有实用价值。分享给大家供大家参考。具体方法如下:

FindFile.class.php类文件用于遍历目录文件,具体代码如下:

  1. <?php  
  2. /** 遍历文件夹及文件类  
  3. *  Date:  2013-03-21  
  4. *  Author: fdipzone  
  5. *  Ver:  1.0  
  6. */ 
  7. class FindFile{  
  8.    
  9.   public $files = array();  // 存储遍历的文件  
  10.   protected $maxdepth;    // 搜寻深度,0表示没有限制  
  11.    
  12.   /* 遍历文件及文件夹  
  13.   *  @param String $spath   文件夹路径  
  14.   *  @param int  $maxdepth 搜寻深度,默认搜寻全部  
  15.   */ 
  16.   public function process($spath$maxdepth=0){  
  17.     if(isset($maxdepth) && is_numeric($maxdepth) && $maxdepth>0){  
  18.       $this->maxdepth = $maxdepth;  
  19.     }else{  
  20.       $this->maxdepth = 0;  
  21.     }  
  22.     $this->files = array();  
  23.     $this->traversing($spath); // 遍历  
  24.   }  
  25.    
  26.   /* 遍历文件及文件夹  
  27.   *  @param String $spath 文件夹路径  
  28.   *  @param int  $depth 当前文件夹深度  
  29.   */ 
  30.   private function traversing($spath$depth=1){  
  31.     if($handle = opendir($spath)){  
  32.       while(($file=readdir($handle))!==false){  
  33.         if($file!='.' && $file!='..'){  
  34.           $curfile = $spath.'/'.$file;  
  35.    
  36.           if(is_dir($curfile)){ // dir  
  37.             if($this->maxdepth==0 || $depth<$this->maxdepth){ // 判断深度  
  38.               $this->traversing($curfile$depth+1);  
  39.             }  
  40.           }else// file  
  41.             $this->handle($curfile);  
  42.           }  
  43.         }  
  44.       }  
  45.       closedir($handle);  
  46.     }  
  47.   } //www.phpfensi.com 
  48.    
  49.   /** 处理文件方法  
  50.   * @param String $file 文件路径  
  51.   */ 
  52.   protected function handle($file){  
  53.     array_push($this->files, $file);  
  54.   }  
  55. }  
  56. ?>  

UnsetBom.class.php用于清除utf8+bom文件的bom,即头三个字节 0xEF 0xBB 0xBF,继承FindFile类,具体代码如下:

  1. <?php  
  2. /** 遍历所有文件,清除utf8+bom 0xEF 0xBB 0xBF  
  3. *  Date:  2013-03-21  
  4. *  Author: fdipzone  
  5. *  Ver:  1.0  
  6. */ 
  7. class UnsetBom extends FindFile{  
  8.    
  9.   private $filetype = array(); // 需要处理的文件类型  
  10.    
  11.   // 初始化  
  12.   public function __construct($filetype=array()){  
  13.     if($filetype){  
  14.       $this->filetype = $filetype;  
  15.     }  
  16.   }  
  17.    
  18.   /** 重写FindFile handle方法  
  19.   *  @param String $file 文件路径  
  20.   */ 
  21.   protected function handle($file){  
  22.     if($this->check_ext($file) && $this->check_utf8bom($file)){ // utf8+bom  
  23.       $this->clear_utf8bom($file);    // clear  
  24.       array_push($this->files, $file);  // save log  
  25.     }  
  26.   }  
  27.    
  28.   /** 检查文件是否utf8+bom  
  29.   *  @param String $file 文件路径  
  30.   *  @return boolean  
  31.   */ 
  32.   private function check_utf8bom($file){  
  33.     $content = file_get_contents($file);  
  34.     return ord(substr($content,0,1))===0xEF && ord(substr($content,1,1))===0xBB && ord(substr($content,2,1))===0xBF;  
  35.   }  
  36.    
  37.   /** 清除utf8+bom  
  38.   *  @param String $file 文件路径  
  39.   */ 
  40.   private function clear_utf8bom($file){  
  41.     $content = file_get_contents($file);  
  42.     file_put_contents($filesubstr($content,3), true); // 去掉头三个字节  
  43.   }  
  44.    
  45.   /** 检查文件类型  
  46.   *  @param String $file 文件路径  
  47.   *  @return boolean  
  48.   */ 
  49.   private function check_ext($file){  
  50.     $file_ext = strtolower(array_pop(explode('.',basename($file))));  
  51.     if(in_array($file_ext$this->filetype)){  
  52.       return true;  
  53.     }else{  
  54.       return false;  
  55.     }  
  56.   }  
  57. }  
  58. ?>  

去除utf8 bom头Demo遍历文件示例:

  1. <?php  
  2. require('FindFile.class.php');  
  3. require('UnsetBom.class.php');  
  4.    
  5. $folder = dirname(__FILE__);  
  6.    
  7. $obj = new UnsetBom(array('php','css','js')); // 文件类型  
  8. $obj->process($folder);  
  9.    
  10. print_r($obj->files);  
  11. ?> 

希望本文所述对大家PHP程序设计的学习有所帮助。

Tags: PHP遍历文件夹

分享到: