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)!