Php 重命名扩展名未知的文件

Php 重命名扩展名未知的文件,php,Php,我有一个文件,有两个可能的名称:slide_f.png或slide_f.jpg 我想根据以前的扩展名将此文件重命名为幻灯片“%$nr.”.jpg或幻灯片“%$nr.”.png 如何在不知道初始文件扩展名的情况下执行此操作?试试。然后,继续重命名 if(file_exists($name.'.jpg')) { rename($name.'.jpg', $new_name.'.jpg') } elseif(file_exists($name.'.png')) { rename($na

我有一个文件,有两个可能的名称:slide_f.png或slide_f.jpg

我想根据以前的扩展名将此文件重命名为幻灯片“%$nr.”.jpg或幻灯片“%$nr.”.png

如何在不知道初始文件扩展名的情况下执行此操作?

试试。然后,继续重命名

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
}
使用glob通过前缀对文件进行通配符匹配,然后使用pathinfo将文件名分解为其组成部分。然后重建并重命名

$files = glob('slide_f.*');
foreach ($files as $file) {
   $ext = pathinfo($file, PATHINFO_EXTENSION);
   $basename = pathinfo($file, PATHINFO_BASENAME);
   rename($file, "{$basename}{$nr}.{$ext}");
}
试试看,然后你会得到文件名

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

如果要重命名,文件必须先存在,对吗?如果它存在,你能得到它的扩展吗?你的问题有点模糊……是的,文件存在,但可以是slide_f.png或slide_f.jpg。提示:按照@Luigi Siri的提示,检查其中一个是否存在,然后获得现有文件的扩展名。那么如何确定现有文件名呢?这一行$basename=pathinfo$file,pathinfo_basename;是$basename=pathinfo$文件,pathinfo_文件名;?