我有一個帶有兩個可能名稱的文件:slide_f.png
或slide_f.jpg
。重命名擴展名未知的文件
我想rename
此文件到slide'.$nr.'.jpg
或slide'.$nr.'.png
取決於以前的擴展名。
我怎麼能不知道最初的文件擴展名?
我有一個帶有兩個可能名稱的文件:slide_f.png
或slide_f.jpg
。重命名擴展名未知的文件
我想rename
此文件到slide'.$nr.'.jpg
或slide'.$nr.'.png
取決於以前的擴展名。
我怎麼能不知道最初的文件擴展名?
嘗試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";
}
這個怎麼樣:
if(file_exists("slide_f.png")){
//rename to png
}else if(file_exists("slide_f.jpg")){
//rename to jpg
}else{
// unknown file format
}
使用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}");
}
不應該這行'$ basename = pathinfo($ file,PATHINFO_BASENAME);'是'$ basename = pathinfo($ file,PATHINFO_FILENAME);'? – Perocat
嘗試glob,那麼你得到的文件名。
$fnList = glob('slide_f.*');
foreach($fnList as $fn){
$fn = preg_replace('/_f\.',$nr, $fn);
}
如果你要重命名,文件必須先存在,對不對?如果它存在,你能擴展它嗎?你的問題有點含糊...... – DontVoteMeDown
是的文件存在,但可以是'slide_f.png'或'slide_f.jpg'。 – Perocat
提示:['glob'](http://PHP.net/glob) – deceze