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 相关文章推荐
桌面中心(一)创建数据库
Oct 09 PHP
PHP flock 文件锁详细介绍
Dec 29 PHP
PHP autoload与spl_autoload自动加载机制的深入理解
Jun 05 PHP
ThinkPHP中的常用查询语言汇总
Aug 22 PHP
9段PHP实用功能的代码推荐
Oct 14 PHP
使用array_map简单搞定PHP删除文件、删除目录
Oct 29 PHP
PHP操作MySQL事务实例
Nov 05 PHP
PHP实现在线阅读PDF文件的方法
Jun 23 PHP
php实现可运算的验证码
Nov 10 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
Feb 14 PHP
thinkPHP框架实现的无限回复评论功能示例
Jun 09 PHP
TP5框架实现的数据库备份功能示例
Apr 05 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
复杂检索数据并分页显示的处理方法
2006/10/09 PHP
php中检查文件或目录是否存在的代码小结
2012/10/22 PHP
php银联网页支付实现方法
2015/03/04 PHP
PHP使用flock实现文件加锁的方法
2015/07/01 PHP
php使用APC实现实时上传进度条功能
2015/10/26 PHP
javascript控制frame,iframe的src属性代码
2009/12/31 Javascript
JavaScript基础语法让人疑惑的地方小结
2012/05/23 Javascript
nodejs npm package.json中文文档
2014/09/04 NodeJs
node.js回调函数之阻塞调用与非阻塞调用
2015/11/13 Javascript
基于jquery fly插件实现加入购物车抛物线动画效果
2016/04/05 Javascript
Vue.JS入门教程之列表渲染
2016/12/01 Javascript
jQuery层级选择器实例代码
2017/02/06 Javascript
bootstrap PrintThis打印插件使用详解
2017/02/20 Javascript
基于AGS JS开发自定义贴图图层
2017/03/31 Javascript
jQuery自定义图片上传插件实例代码
2017/04/04 jQuery
JS将unicode码转中文方法
2017/05/08 Javascript
AngularJS折叠菜单实现方法示例
2017/05/18 Javascript
微信小程序学习笔记之目录结构、基本配置图文详解
2019/03/28 Javascript
js+HTML5 canvas 实现简单的加载条(进度条)功能示例
2019/07/16 Javascript
jQuery实现全选、反选和不选功能的方法详解
2019/12/04 jQuery
微信小程序开发之获取用户手机号码(php接口解密)
2020/05/17 Javascript
微信小程序wx.getUserInfo授权获取用户信息(头像、昵称)的实现
2020/08/19 Javascript
Python实现模拟时钟代码推荐
2015/11/08 Python
Python入门之三角函数sin()函数实例详解
2017/11/08 Python
Python selenium实现微博自动登录的示例代码
2018/05/16 Python
Python socket聊天脚本代码实例
2020/01/02 Python
如何利用pycharm进行代码更新比较
2020/11/04 Python
HTML5是什么 HTML5是什么意思 HTML5简介
2012/10/26 HTML / CSS
英国网上购买肉类网站:Great British Meat
2018/10/17 全球购物
Mountain Hardwear官网:攀岩服装和户外装备
2019/09/26 全球购物
学雷锋先进个人事迹
2014/05/26 职场文书
2014年工程部工作总结
2014/11/25 职场文书
2014年纪委工作总结
2014/12/05 职场文书
80后创业总结的9条职场用人思想,记得收藏
2019/08/13 职场文书
python爬虫之爬取笔趣阁小说
2021/04/22 Python
Apache POI操作批量导入MySQL数据库
2022/06/21 Servers