php更改目录及子目录下所有的文件后缀扩展名的代码


Posted in PHP onOctober 12, 2010

不是很经常处理文件,所以对遍历目录还不是很熟悉,找了一下资料,自己修改一下。
让大家看看是否需要完善的
代码主要的目的是 批量更改 文件后缀 由于淘宝数据包图片类型的不同 所以要改一下适合的。

<?php 
//本文件和要改变的目录下的文件 放在同一文件夹下 
define("STA",".gif");//原来的文件格式 
define("END",".jpg");//要改变的格式 
$dir="./"; 
$arr=allfile($dir); 
foreach($arr as $t) 
{ 
$t=str_replace(".//","",$t); 
if(substr_count($t,STA)>0) 
{ 
$f2=str_replace(STA,"",$t); 
rename($t,$f2.END); 
} 
} 
//获取目录下所有文件的函数 
function allfile($dir) 
{ 
$files=array(); 
if(is_file($dir)) 
{ 
return $dir; 
} 
$handle = opendir($dir); 
if($handle) { 
while(false !== ($file = readdir($handle))) { 
if ($file != '.' && $file != '..') { 
$filename = $dir . "/" . $file; 
if(is_file($filename)) { 
$files[] = $filename; 
}else { 
$files = array_merge($files, allfile($filename)); 
} 
} 
} // end while 
closedir($handle); 
} 
return $files; 
} 
?>

用字符串替换不太严谨,万一名称中就有gif程序就有异常。
建议使用PHP函数pathinfo(),循环段可修改为
foreach($arr as $t) 
{ 
$path_parts = pathinfo($t); 

if($path_parts["extension"] == STA) 

{ 


rename($t,$path_parts["dirname"]."/".basename($t,STA).END); 

} 
}
PHP 相关文章推荐
从一个不错的留言本弄的mysql数据库操作类
Sep 02 PHP
phpMyAdmin 链接表的附加功能尚未激活的问题
Aug 01 PHP
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
Oct 12 PHP
php学习之简单计算器实现代码
Jun 09 PHP
php若干单维数组遍历方法的比较
Sep 20 PHP
PHP正确解析UTF-8字符串技巧应用
Nov 07 PHP
PHP基于工厂模式实现的计算器实例
Jul 16 PHP
PHP中header用法小结
May 23 PHP
php 实现301重定向跳转实例代码
Jul 18 PHP
总结PHP中数值计算的注意事项
Aug 14 PHP
PHP入门教程之上传文件实例详解
Sep 11 PHP
php使用curl_init()和curl_multi_init()多线程的速度比较详解
Aug 15 PHP
利用php+mysql来做一个功能强大的在线计算器
Oct 12 #PHP
发一个php简单的伪原创程序,配合商城采集用的
Oct 12 #PHP
php知道与问问的采集插件代码
Oct 12 #PHP
php笔记之常用文件操作
Oct 12 #PHP
php+jquery编码方面的一些心得(utf-8 gb2312)
Oct 12 #PHP
windows下升级PHP到5.3.3的过程及注意事项
Oct 12 #PHP
PHP OPCode缓存 APC详细介绍
Oct 12 #PHP
You might like
兼容PHP5的PHP目录管理函数库
2008/07/10 PHP
PHP的变量总结 新手推荐
2011/04/18 PHP
PHP中使用substr()截取字符串出现中文乱码问题该怎么办
2015/10/21 PHP
解析WordPress中函数钩子hook的作用及基本用法
2015/12/22 PHP
Javascript 表单之间的数据传递代码
2008/12/04 Javascript
起点页面传值js,有空研究学习下
2010/01/25 Javascript
用dtree实现树形菜单 dtree使用说明
2011/10/17 Javascript
设置checkbox为只读(readOnly)的两种方式
2013/10/11 Javascript
推荐一个自己用的封装好的javascript插件
2015/01/29 Javascript
jQuery实现图片轮播特效代码分享
2015/09/15 Javascript
javascript禁止超链接跳转的方法
2016/02/02 Javascript
node.js Sequelize实现单实例字段或批量自增、自减
2016/12/08 Javascript
JS实现上传图片的三种方法并实现预览图片功能
2017/07/14 Javascript
基于jquery.page.js实现分页效果
2018/01/01 jQuery
关于jquery layui弹出层的使用方法
2018/04/21 jQuery
Taro集成Redux快速上手的方法示例
2018/06/21 Javascript
Element-UI中关于table表格的那些骚操作(小结)
2019/08/15 Javascript
vue设置导航栏、侧边栏为公共页面的例子
2019/11/01 Javascript
JS动态显示倒计时效果
2019/12/12 Javascript
vue.js使用v-model实现父子组件间的双向通信示例
2020/02/05 Javascript
python中split方法用法分析
2015/04/17 Python
详谈python中冒号与逗号的区别
2018/04/18 Python
python Tensor和Array对比分析
2020/01/08 Python
Python基于内置库pytesseract实现图片验证码识别功能
2020/02/24 Python
Python 实现打印单词的菱形字符图案
2020/04/12 Python
Django model.py表单设置默认值允许为空的操作
2020/05/19 Python
Html5移动端弹幕动画实现示例代码
2018/08/27 HTML / CSS
突袭HTML5之Javascript API扩展3—本地存储全新体验
2013/01/31 HTML / CSS
英国街头品牌:Bee Inspired Clothing
2018/02/12 全球购物
更夫岗位责任制
2014/02/11 职场文书
演讲稿开场白台词
2014/08/25 职场文书
商务代表岗位职责
2015/02/15 职场文书
2015年七一建党节演讲稿
2015/03/19 职场文书
2015年暑期社会实践活动总结
2015/03/27 职场文书
杨善洲电影观后感
2015/06/04 职场文书
vue 实现上传组件
2021/05/31 Vue.js