程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP遍歷文件夾及文件類及處理類

PHP遍歷文件夾及文件類及處理類

編輯:PHP綜合

FindFile.class.php

用於遍歷目錄文件

<?php  
/** 遍歷文件夾及文件類 
*   Date:   2013-03-21 
*   Author: fdipzone 
*   Ver:    1.0 
*/
class FindFile{  
      
    public $files = array();    // 存儲遍歷的文件  
    protected $maxdepth;        // 搜尋深度,0表示沒有限制  
      
      
    /*  遍歷文件及文件夾 
    *   @param String $spath     文件夾路徑 
    *   @param int    $maxdepth  搜尋深度,默認搜尋全部 
    */
    public function process($spath, $maxdepth=0){  
        if(isset($maxdepth) && is_numeric($maxdepth) && $maxdepth>0){  
            $this->maxdepth = $maxdepth;  
        }else{  
            $this->maxdepth = 0;  
        }  
        $this->files = array();  
        $this->traversing($spath); // 遍歷  
    }  
      
      
    /*  遍歷文件及文件夾 
    *   @param String $spath 文件夾路徑 
    *   @param int    $depth 當前文件夾深度 
    */
    private function traversing($spath, $depth=1){  
        if($handle = opendir($spath)){  
            while(($file=readdir($handle))!==false){  
                if($file!='.' && $file!='..'){  
                    $curfile = $spath.'/'.$file;  
      
                    if(is_dir($curfile)){ // dir  
                        if($this->maxdepth==0 || $depth<$this->maxdepth){ // 判斷深度  
                            $this->traversing($curfile, $depth+1);  
                        }  
                    }else{  // file  
                        $this->handle($curfile);  
                    }  
      
                }  
            }  
            closedir($handle);  
        }  
    }  
      
      
    /** 處理文件方法 
    *  @param String $file 文件路徑 
    */
    protected function handle($file){  
        array_push($this->files, $file);  
    }  
      
}  
?>

UnsetBom.class.php用於清除utf8+bom文件的bom,即頭三個字節 0xEF 0xBB 0xBF,繼承FindFile類

<?php  
/** 遍歷所有文件,清除utf8+bom 0xEF 0xBB 0xBF 
*   Date:   2013-03-21 
*   Author: fdipzone 
*   Ver:    1.0 
*/
class UnsetBom extends FindFile{  
      
      
    private $filetype = array(); // 需要處理的文件類型  
      
      
    // 初始化  
    public function __construct($filetype=array()){  
        if($filetype){  
            $this->filetype = $filetype;  
        }  
    }  
      
      
    /** 重寫FindFile handle方法 
    *   @param  String $file 文件路徑 
    */
    protected function handle($file){  
        if($this->check_ext($file) && $this->check_utf8bom($file)){ // utf8+bom  
            $this->clear_utf8bom($file);        // clear  
            array_push($this->files, $file);    // save log  
        }  
    }  
      
      
    /** 檢查文件是否utf8+bom 
    *   @param  String $file 文件路徑 
    *   @return boolean 
    */
    private function check_utf8bom($file){  
        $content = file_get_contents($file);  
        return ord(substr($content,0,1))===0xEF && ord(substr($content,1,1))===0xBB && ord(substr($content,2,1))===0xBF;  
    }  
      
      
    /** 清除utf8+bom 
    *   @param String $file 文件路徑 
    */
    private function clear_utf8bom($file){  
        $content = file_get_contents($file);  
        file_put_contents($file, substr($content,3), true); // 去掉頭三個字節  
    }  
      
      
    /** 檢查文件類型 
    *   @param  String $file 文件路徑 
    *   @return boolean 
    */
    private function check_ext($file){  
        $file_ext = strtolower(array_pop(explode('.',basename($file))));  
        if(in_array($file_ext, $this->filetype)){  
            return true;  
        }else{  
            return false;  
        }  
    }  
      
}  
?>

Demo unset utf8 bom

<?php  
require('FindFile.class.php');  
require('UnsetBom.class.php');  
      
$folder = dirname(__FILE__);  
      
$obj = new UnsetBom(array('php','css','js')); // 文件類型  
$obj->process($folder);  
      
print_r($obj->files);  
?>

作者:csdn博客 傲雪星楓

查看本欄目

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved