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 相关文章推荐
MayFish PHP的MVC架构的开发框架
Aug 13 PHP
PHP开启gzip页面压缩实例代码
Mar 11 PHP
用PHP的超级变量$_POST获取HTML表单(HTML Form) 数据
May 07 PHP
PHP把网页保存为word文件的三种方法
Apr 01 PHP
php实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例
Jul 18 PHP
PHP中通过fopen()函数访问远程文件示例
Nov 18 PHP
php运行时动态创建函数的方法
Mar 16 PHP
PHP简单实现断点续传下载的方法
Sep 25 PHP
php5.4传引用时报错问题分析
Jan 22 PHP
crontab无法执行php的解决方法
Jan 25 PHP
PHP中Restful api 错误提示返回值实现思路
Apr 12 PHP
php实现base64图片上传方式实例代码
Feb 22 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 strncasecmp字符串比较的小技巧
2011/01/04 PHP
php处理restful请求的路由类分享
2014/02/27 PHP
2个比较经典的PHP加密解密函数分享
2014/07/01 PHP
php浏览历史记录的方法
2015/03/10 PHP
PHP中foreach()用法汇总
2015/07/02 PHP
php使用自定义函数实现汉字分割替换功能示例
2017/01/30 PHP
详解php实现页面静态化原理
2017/06/21 PHP
PHP数字金额转换成中文大写显示
2019/01/05 PHP
微信公众号实现扫码获取微信用户信息(网页授权)
2019/04/09 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
2019/10/11 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
2019/10/11 PHP
PHP7移除的扩展和SAPI
2021/03/09 PHP
获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
2012/11/08 Javascript
深入解析JavaScript框架Backbone.js中的事件机制
2016/02/14 Javascript
Ionic2系列之使用DeepLinker实现指定页面URL
2016/11/21 Javascript
js控制一个按钮是否可点击(可使用)disabled的实例
2017/02/14 Javascript
javascript实现圣旨卷轴展开效果(代码分享)
2017/03/23 Javascript
Vue实例中生命周期created和mounted的区别详解
2017/08/25 Javascript
浅谈mint-ui loadmore组件注意的问题
2017/11/08 Javascript
VueJs监听window.resize方法示例
2018/01/17 Javascript
微信小程序 网络通信实现详解
2019/07/23 Javascript
Vue filter 过滤器、以及在table中的使用介绍
2020/09/07 Javascript
vue element el-transfer增加拖拽功能
2021/01/15 Vue.js
python使用7z解压apk包的方法
2015/04/18 Python
Python使用matplotlib绘制正弦和余弦曲线的方法示例
2018/01/06 Python
Python读取excel指定列生成指定sql脚本的方法
2018/11/28 Python
Django+Uwsgi+Nginx如何实现生产环境部署
2020/07/31 Python
Python 连接 MySQL 的几种方法
2020/09/09 Python
Django 用户认证Auth组件的使用
2020/11/30 Python
Java提供了哪些企业应用编程接口
2015/02/13 面试题
CAD制图设计师自荐信
2014/01/29 职场文书
公司合作意向书范文
2014/07/30 职场文书
政府个人对照检查材料
2014/08/28 职场文书
给病人的慰问信
2015/03/23 职场文书
个人更名证明
2015/06/23 职场文书
优秀范文:《但愿人长久》教学反思3篇
2019/10/24 职场文书