PHP遍历文件夹与文件类及处理类用法实例
本文实例讲述了PHP遍历文件夹与文件类及处理类用法,非常具有实用价值。分享给大家供大家参考。具体方法如下:
FindFile.class.php类文件用于遍历目录文件,具体代码如下:
<?php /**遍历文件夹及文件类 *Date:2013-03-21 *Author:fdipzone *Ver:1.0 */ classFindFile{ public$files=array();//存储遍历的文件 protected$maxdepth;//搜寻深度,0表示没有限制 /*遍历文件及文件夹 *@paramString$spath文件夹路径 *@paramint$maxdepth搜寻深度,默认搜寻全部 */ publicfunctionprocess($spath,$maxdepth=0){ if(isset($maxdepth)&&is_numeric($maxdepth)&&$maxdepth>0){ $this->maxdepth=$maxdepth; }else{ $this->maxdepth=0; } $this->files=array(); $this->traversing($spath);//遍历 } /*遍历文件及文件夹 *@paramString$spath文件夹路径 *@paramint$depth当前文件夹深度 */ privatefunctiontraversing($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); } } /**处理文件方法 *@paramString$file文件路径 */ protectedfunctionhandle($file){ array_push($this->files,$file); } } ?>
UnsetBom.class.php用于清除utf8+bom文件的bom,即头三个字节0xEF0xBB0xBF,继承FindFile类,具体代码如下:
<?php /**遍历所有文件,清除utf8+bom0xEF0xBB0xBF *Date:2013-03-21 *Author:fdipzone *Ver:1.0 */ classUnsetBomextendsFindFile{ private$filetype=array();//需要处理的文件类型 //初始化 publicfunction__construct($filetype=array()){ if($filetype){ $this->filetype=$filetype; } } /**重写FindFilehandle方法 *@paramString$file文件路径 */ protectedfunctionhandle($file){ if($this->check_ext($file)&&$this->check_utf8bom($file)){//utf8+bom $this->clear_utf8bom($file);//clear array_push($this->files,$file);//savelog } } /**检查文件是否utf8+bom *@paramString$file文件路径 *@returnboolean */ privatefunctioncheck_utf8bom($file){ $content=file_get_contents($file); returnord(substr($content,0,1))===0xEF&&ord(substr($content,1,1))===0xBB&&ord(substr($content,2,1))===0xBF; } /**清除utf8+bom *@paramString$file文件路径 */ privatefunctionclear_utf8bom($file){ $content=file_get_contents($file); file_put_contents($file,substr($content,3),true);//去掉头三个字节 } /**检查文件类型 *@paramString$file文件路径 *@returnboolean */ privatefunctioncheck_ext($file){ $file_ext=strtolower(array_pop(explode('.',basename($file)))); if(in_array($file_ext,$this->filetype)){ returntrue; }else{ returnfalse; } } } ?>
去除utf8bom头Demo遍历文件示例:
<?php require('FindFile.class.php'); require('UnsetBom.class.php'); $folder=dirname(__FILE__); $obj=newUnsetBom(array('php','css','js'));//文件类型 $obj->process($folder); print_r($obj->files); ?>
希望本文所述对大家PHP程序设计的学习有所帮助。