Php 如何从没有扩展名的文件名中获取文件扩展名?

Php 如何从没有扩展名的文件名中获取文件扩展名?,php,file-extension,fileinfo,Php,File Extension,Fileinfo,PHP:我正在上传一个文件夹中的图像文件,其名称为特定格式,类似于postd\u posttype\u postserial.ext,因此,在显示特定博客文章时,我将根据该文章的帖子id和帖子类型使用此格式。但问题是我没有那个文件的扩展名。所以这里是一个实际的问题,如何获得一个文件的扩展名,我只知道它的名称(在name.ext中)而不知道它的扩展名 仅供参考,我搜索了这个函数,发现很少有函数返回扩展名,但您必须传递一个带有扩展名的完整文件名才能获取文件信息。在您的情况下,您需要获取文件的mime

PHP:我正在上传一个文件夹中的图像文件,其名称为特定格式,类似于
postd\u posttype\u postserial.ext
,因此,在显示特定博客文章时,我将根据该文章的帖子id和帖子类型使用此格式。但问题是我没有那个文件的扩展名。所以这里是一个实际的问题,如何获得一个文件的扩展名,我只知道它的名称(在name.ext中)而不知道它的扩展名


仅供参考,我搜索了这个函数,发现很少有函数返回扩展名,但您必须传递一个带有扩展名的完整文件名才能获取文件信息。

在您的情况下,您需要获取文件的mime类型,然后在PHP中执行
开关
语句。您可以通过以下方式获取文件的mime类型:

$finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension
$mime_type = finfo_file($finfo, $postid_posttype_postserial_file);
finfo_close($finfo);

$mime_types = array(
    'image/gif' => '.gif',
    'image/jpeg' => '.jpg',
    // etc.
);

$ext = array_key_exists($mime_type, $mime_types) ? $mime_types[$mime_type] : false;
echo $ext;
了解更多信息:


更新2:正如评论所指出的,将
开关
替换为
数组
匹配更加优雅。

您是否试图从没有扩展名的文件名中获取图像类型?或者文件名是否有您要查找的扩展名?
开关
/
大小写
的可能重复有点可笑。只需设置一个名为
$mime\u-type\u-array
的数组,然后作为
$mime\u-type\u-array[$mime\u-type]
访问即可。另外,只需使用
array\u key\u exists
来确保
$mime\u type
类型实际上在
$mime\u type\u数组中,就像这样
如果(array\u key\u exists(mime\u type,$mime\u type\u数组)){$ext=$mime\u type\u数组[$mime\u type]}
也可以简化
$ext=array\u key\u key\u存在(mime\u type,$mime\u类型,$mime\u数组)$mime_类型_数组[$mime_类型]:null。记住设置一个
$mime\u type\u数组
,当然还有键和值。是的,我编辑的时候我们有同样简单的代码。哈哈哈