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

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

<?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的Yii框架中组件行为的属性注入和方法注入

行为的属性和方法注入原理 上面我们了解到了行为的用意在于将自身的属性和方法注入给所依附的类。 那么Yii中是如何将一个行为 yii\base\Behavior 的属性和方法, 注入到一个...

PHP Memcached应用实现代码

PHP Memcached应用实现代码

肖理达 (KrazyNio AT hotmail.com), 2006.04. 06, 转载请注明出处 一、memcached 简介 在很多场合,我们都会听到 memcached 这个名...

PHP JSON格式数据交互实例代码详解

在PHP中解析JSON主要用到json_encode和json_decode两个PHP JSON函数,比PHP解析XML方便很多,下面详细介绍下PHP JSON的使用。JSON基础介绍...

用PHP为SHOPEX增加日志功能代码

尤其像知道哪些蜘蛛对本站进行了访问,访问的频度,页面,普通的站点统计都是无法解决的。 虽然我对PHP了解的很少,但是凭借.NET的开发经验,借助百度仍然很快的完成了,虽然简单,大家莫笑。...

PHP实现通过Luhn算法校验信用卡卡号是否有效

本文实例讲述了PHP实现通过Luhn算法校验信用卡卡号是否有效的方法。分享给大家供大家参考。具体实现方法如下: $numbers = "49927398716 49927398717...