确定保存的图像(或任何文件)的文件扩展名


determine file extension of a saved image (or any file)

鉴于我只知道名称而不是扩展名,确定已保存文件的扩展名的最有效方法是什么?

有效的类型/扩展名为.jpg、.png和.gif

例如,每个项目都有一个图像,因此图像名称将是 item1.jpg or item1.png or item1.gif item2.jpg or item2.png or item2.gif etc.

到目前为止,我能想到的唯一方法是循环使用三种可能性

if(file_exists('item1.jpg')) {...
} elseif(file_exists('item1.png')) {...
} elseif(file_exists('item1.gif')) {...
}

有没有更有效的方法?

尝试mime_content_type

这应该检查文件的MIME并为您提供类型

为了在更少的代码方面提高效率,你可以这样做

$name = 'item23';
$images = glob("images/$name.???");
$image = $images ? $images[0] : '';

应该返回与您的文件名匹配的第一个文件,无论它具有哪个扩展名,或者如果没有找到匹配的文件,则返回''我认为这在执行时间方面也应该比检查file_exists三次更有效。


在我的不请自来的意见中,我认为存储与您的文章相关的图像的完整路径并不是一个坏主意。