2013-06-20 84 views
-1

我有一个带有两个可能名称的文件:slide_f.pngslide_f.jpg重命名扩展名未知的文件

我想rename此文件到slide'.$nr.'.jpgslide'.$nr.'.png取决于以前的扩展名。

我怎么能不知道最初的文件扩展名?

+0

如果你要重命名,文件必须先存在,对不对?如果它存在,你能扩展它吗?你的问题有点含糊...... – DontVoteMeDown

+0

是的文件存在,但可以是'slide_f.png'或'slide_f.jpg'。 – Perocat

+0

提示:['glob'](http://PHP.net/glob) – deceze

回答

4

尝试file_exists。然后,继续重命名。

if(file_exists($name.'.jpg')) 
{ 
    rename($name.'.jpg', $new_name.'.jpg') 
} 
elseif(file_exists($name.'.png')) 
{ 
    rename($name.'.png', $new_name.'.png') 
} 
else 
{ 
    echo "the file doesn't exists"; 
} 
1

这个怎么样:

if(file_exists("slide_f.png")){ 
    //rename to png 
}else if(file_exists("slide_f.jpg")){ 
    //rename to jpg 
}else{ 
    // unknown file format 
} 
6

使用​​3210到通配符匹配其前缀的文件,然后PATHINFO到文件名分解成其组成部分。然后重建和重命名

$files = glob('slide_f.*'); 
foreach ($files as $file) { 
    $ext = pathinfo($file, PATHINFO_EXTENSION); 
    $basename = pathinfo($file, PATHINFO_BASENAME); 
    rename($file, "{$basename}{$nr}.{$ext}"); 
} 
+0

不应该这行'$ basename = pathinfo($ file,PATHINFO_BASENAME);'是'$ basename = pathinfo($ file,PATHINFO_FILENAME);'? – Perocat

1

尝试glob,那么你得到的文件名。

$fnList = glob('slide_f.*'); 
foreach($fnList as $fn){ 
    $fn = preg_replace('/_f\.',$nr, $fn); 
} 
相关问题