2013-06-20 111 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); 
} 
相關問題