PHP 遍曆檔案夾及檔案類及處理類

來源:互聯網
上載者:User
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

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

以上就是PHP 遍曆檔案夾及檔案類及處理類的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.