php文件遍历类,PHP 遍历文件夹及文件类及处理类

FindFile.class.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 || $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);

}

}

?>

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;

}

}

}

?>

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

?>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/512661.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ARMv9刷屏 —— 号称十年最大变革,Realm机密计算技术有什么亮点?

简介: 让我们看下ARMv9机密计算相关的新特性Realm。 ARMv9的新闻刷屏了。ARMv9号称十年以来最重大变革,因此让我们看下ARMv9中机密计算相关的新特性Realm。(注:本文是对Introducing the Confidential Compute Architecture的部分翻…

JVM性能提升50%,聊一聊背后的秘密武器Alibaba Dragonwell

简介: 你要知道的关于Alibaba Dragonwell一些重要优化措施。 今年四月五日,阿里云开放了新一代ECS实例的邀测[1],Alibaba Dragonwell也在新ECS上进行了极致的优化。相比于之前的dragonwell_11.0.8.3版本,即将发布的dragonwell_11.…

34 年了,“杀”不死的 Perl!

作者 | 祝涛 出品 | CSDN(ID:CSDNnews)2021年12月18日,Perl迎来了自己34岁的生日。当程序员聊到Perl会聊些什么呢?在各大平台搜索Perl时,你会发现大家对Perl的态度呈现出一种两级分化的状态&#xff…

python的stack用法_Python numpy.stack函数方法的使用

numpy.stacknumpy.stack(arrays, axis0, outNone) [source]沿着新的轴连接数组序列。axis参数在结果的维度中指定新轴的索引。例如,如果axis0,它将是第一个维度;如果axis-1,它将是最后一个维度。1.10.0版中的新功能。参数 :a…

“不服跑个分?” 是噱头还是实力?

简介: Linux内核社区常常以跑分软件得分,来评价一个优化补丁的价值。让软件跑高分,就是实力的体现! 一、背景:性能之战 “不服跑个分”已经沦为手机行业的调侃用语,但是实话实说,在操作系统领域…

Medusa 又一个 Shopify 的开源替代品!

作者 | Eason来源 | 程序员巴士Medusa是一个开源的headless商务引擎,具有速度快且可定制的优点。由于 Medusa 分为 3 个核心组件 - 公开的REST API headless商务部分、商店的前端以及admin面板 - 大家可以自由地整体使用该平台或者来适配设置电子商店。在本教程系列…

python围棋程序在屏幕上找棋盘_用C语言编程 在屏幕上显示围棋棋盘

展开全部--以怎么不用 MS VC++6 ??编C语言一般都用啊还有\xCD是C语言Ascii代码 表示一个图形用循环32313133353236313431303231363533e58685e5aeb931333264643133语句啊!等我一下 晚上写出来 贴…

coredump 瘦身风云

简介: minicoredump神也! 继上一篇非典型程序员青囊搞定内存泄露问题后,美美地睡了一觉。睡梦中,突然金光闪闪,万道光芒照进时光隧道,恍惚来到大唐神龙年间。青囊此时化身狄仁杰高级助理,陪同狄…

谁来拯救存量SGX1平台?又一个内核特性合并的血泪史

简介: 今天的故事主角,是一个被称为Flexible Launch Control的SGX平台特性。 前言 自从Intel内核开发人员Jarkko Sakkinen于2017年9月2日在intel-sgx-kernel-devlists.01.org邮件列表上发出v1版的SGX in-tree驱动以来,时间已经过去了3年多了…

DataWorks 功能实践速览

简介: DataWorks功能实践系列,帮助您解析业务实现过程中的痛点,提高业务功能使用效率! 功能推荐:独享数据集成资源组 如上期数据同步解决方案介绍,数据集成的批数据同步任务运行时,需要占用一…

spring 事务隔离级别和传播行为_Java工程师面试1000题146-Spring数据库事务传播属性和隔离级别...

146、简介一下Spring支持的数据库事务传播属性和隔离级别介绍Spring所支持的事务和传播属性之前,我们先了解一下SpringBean的作用域,与此题无关,仅做一下简单记录。在Spring中,可以在元素的scope属性中设置bean的作用域&#xff0…

oracle back log,11g闪回日志(flashback log)保留时间参数 - db_flashback_retention_target

查看 DB_FLASHBACK_RETENTION_TARGET 参数是默认值 1440 (分钟), 即一天时间。 文档对于它的解释如下:DB_FLASHBACK_RETENTION_TARGET specifies the upper limit (in minutes) on how far back in time the database may be flashed back. How far bac…

长江存储发布PCle4.0 固态硬盘致态TiPro7000,顺序读取7400MB/s

2021年12月29日,长江存储重磅发布全新消费级旗舰固态硬盘产品致态TiPro7000。该产品采用基于Xtacking(晶栈) 2.0架构的长江存储第三代三维闪存芯片,支持PCle Gen4x4接口、NVMe 1.4协议,顺序读取速度高达7400MB/s。该产…

图像ISP处理——畸变校正算法

图像畸变校正算法主要用于矫正图像中因为摄像机镜头畸变而引起的形状和尺寸变化。摄像机镜头畸变主要包括径向畸变和切向畸变。以下是一些常见的图像畸变校正算法: 多项式畸变校正法(Polynomial Distortion Correction): 原理&am…

KubeDL 加入 CNCF Sandbox,加速 AI 产业云原生化

简介: 2021 年 6 月 23 日,云原生计算基金会(CNCF)宣布通过全球 TOC 投票接纳 KubeDL 成为 CNCF Sandbox 项目。KubeDL 是阿里开源的基于 Kubernetes 的 AI 工作负载管理框架,取自"Kubernetes-Deep-Learning"…

预登录握手失败_英雄联盟手游登录问题汇总

1、出现“无法安装完成”的情况已经获取了资格,但出现“无法安装完成”的情况,譬如谷歌商店的下载界面一直闪退、下载没进度、卡在安装中、卡在等待中怎么办?可前往第三方下载软件,(推荐介绍GamesToday)下载游戏。2、提示:目前还…

云云协同解决方案全景图发布 华为云助力科技企业云上创新

12月29日,以“云云协同 共创云上新价值”为主题的华为云&华为终端云服务创新峰会2022在京圆满召开。华为云与产业专家和企业代表们共同探讨了在产业数字化机遇与挑战并存的新形势下,如何推动产业升级,共创新价值。 会上,面向科…

oracle导出命令位置,ORACLE 导出导入命令说明

命令详解: E:/>exp helpy 通过输入 EXP 命令和用户名/口令,您可以 在用户 / 口令之后的命令: 实例: EXP SCOTT/TIGER 或者,您也可以通过输入跟有各种参数的 EXP 命令来控制“导出”的运行方式。 要指定参数,您可…

解密万亿参数M6模型预训练背后的分布式框架Whale

简介: 最近,阿里云PAI团队和达摩院智能计算实验室一起发布“低碳版”巨模型M6,大幅降低万亿参数超大模型训练能耗。借助我们自研的Whale框架仅使用480卡GPU,即训练出了规模达人类神经元10倍的万亿参数多模态大模型M6,与…

居然之家:核心业务系统全面上云,采用PolarDB替代传统商业数据库

简介: 国内家居零售龙头企业居然之家完成7大核心业务系统全面上云工作,并实现ERP等核心业务系统从传统商业数据库向阿里云PolarDB云数据库的替换,助力业务系统整体处理能力提升50%以上,弹性能力提升3倍以上,大幅提升应…