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

时间:2022-08-25 17:48:08

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

复制代码代码如下:


<?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); 
  }