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