PHP遍历文件夹与文件类及处理类用法实例


Posted in PHP onSeptember 23, 2014

本文实例讲述了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; 
    } 
  } 
} 
?>

去除utf8 bom头Demo遍历文件示例:

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

希望本文所述对大家PHP程序设计的学习有所帮助。

PHP 相关文章推荐
URL Rewrite的设置方法
Jan 02 PHP
不重新编译PHP为php增加openssl模块的方法
Jun 14 PHP
php若干单维数组遍历方法的比较
Sep 20 PHP
DOM XPATH获取img src值的query
Sep 23 PHP
PHP return语句另类用法不止是在函数中
Sep 17 PHP
浅析PHP中call user func()函数及如何使用call user func调用自定义函数
Nov 05 PHP
PHP MYSQL实现登陆和模糊查询两大功能
Feb 05 PHP
PHP通过加锁实现并发情况下抢码功能
Aug 10 PHP
php基于websocket搭建简易聊天室实践
Oct 24 PHP
Laravel 批量更新多条数据的示例
Nov 27 PHP
php关联数组与索引数组及其显示方法
Mar 12 PHP
关于laravel5.5的定时任务详解(demo)
Oct 23 PHP
PHP邮件发送类PHPMailer用法实例详解
Sep 22 #PHP
php实现的CSS更新类实例
Sep 22 #PHP
php的XML文件解释类应用实例
Sep 22 #PHP
php实现的返回数据格式化类实例
Sep 22 #PHP
php实现的替换敏感字符串类实例
Sep 22 #PHP
php实现的发送带附件邮件类实例
Sep 22 #PHP
PHP实现AES256加密算法实例
Sep 22 #PHP
You might like
PHP的SQL注入过程分析
2012/01/06 PHP
PHP传参之传值与传址的区别
2015/04/24 PHP
php str_replace替换指定次数的方法详解
2017/05/05 PHP
PHP编程实现阳历转换为阴历的方法实例
2017/08/08 PHP
jQuery操作元素css样式的三种方法
2014/06/04 Javascript
JavaScript比较两个对象是否相等的方法
2015/02/06 Javascript
使用CoffeeScrip优美方式编写javascript代码
2015/10/28 Javascript
分析js闭包引起的事件注册问题
2016/03/29 Javascript
js设置和获取自定义属性的方法
2016/10/20 Javascript
JS数组搜索之折半搜索实现方法分析
2017/03/27 Javascript
Angularjs 实现移动端在线测评效果(推荐)
2017/04/05 Javascript
NodeJS实现微信公众号关注后自动回复功能
2017/05/31 NodeJs
详解Chai.js断言库API中文文档
2018/01/31 Javascript
nodejs微信扫码支付功能实现
2018/02/17 NodeJs
JS实现将二维数组转为json格式字符串操作示例
2018/07/12 Javascript
Vue加载组件、动态加载组件的几种方式
2018/08/31 Javascript
vue实现编辑器键盘抬起时内容跟随光标距顶位置向上滚动效果
2020/05/28 Javascript
vue实现移动端触屏拖拽功能
2020/08/21 Javascript
如何将Node.js中的回调转换为Promise
2020/11/10 Javascript
Python简单网络编程示例【客户端与服务端】
2017/05/26 Python
python多行字符串拼接使用小括号的方法
2020/03/19 Python
python2 与 pyhton3的输入语句写法小结
2018/09/10 Python
python 使用 requests 模块发送http请求 的方法
2018/12/09 Python
python图像处理入门(一)
2019/04/04 Python
python自动识别文本编码格式代码
2019/12/26 Python
css3 border-radius属性详解
2017/07/05 HTML / CSS
HTML5视频支持检测(检查浏览器是否支持视频播放)
2013/06/08 HTML / CSS
Android面试宝典
2013/08/06 面试题
关于幼儿的自我评价
2013/12/18 职场文书
医院总经理职责
2013/12/26 职场文书
cf搞笑广告词
2014/03/14 职场文书
2015年毕业生个人自荐书
2015/03/24 职场文书
迎新生欢迎词2015
2015/07/16 职场文书
采购部2015年度工作总结
2015/07/24 职场文书
《老人与海鸥》教学反思
2016/02/16 职场文书
Python快速优雅的批量修改Word文档样式
2021/05/20 Python