php文件遍历类,PHP 遍历文件夹与文件的类

本节内容:

用于遍历文件夹与文件的php类。

1,遍历目录文件 FindFile.class.php

复制代码 代码示例:

/** 遍历文件夹及文件类

*   Date:   2013-03-21

*   Author: fdipzone

*   Ver:    1.0

*   Edit: www.jbxue.com

*/

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 || $depthmaxdepth){ // 判断深度

$this->traversing($curfile, $depth+1);

}

}else{  // file

$this->handle($curfile);

}

}

}

closedir($handle);

}

}

/** 处理文件方法

*  @param String $file 文件路径

*/

protected function handle($file){

array_push($this->files, $file);

}

}

?>

2,测试实例 UnsetBom.class.php用于清除utf8+bom文件的bom,即头三个字节 0xEF 0xBB 0xBF,继承FindFile类。

复制代码 代码示例:

/** 遍历所有文件,清除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;

}

}

}

?>

3,测试实例 unset utf8 bom

复制代码 代码示例:

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

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值