vikas devde
vikas devde

Reputation: 11751

How to get a file extension from a file name without extension?

PHP: I am uploading image files in a folder with a name of particular format which is like postid_posttype_postserial.ext so that while showing particular blog post I would just use this format based on the post id, post type of that post. But problem here is I dont have extension of that file. So here is the actual question, how do I get the extension of a file of which I just know the name(in name.ext) not the extension.

FYI I searched for this and I found few function which returns extensions but you have to pass a full filename that is with extension to get the info about the file.

Upvotes: 0

Views: 443

Answers (1)

lodev09
lodev09

Reputation: 442

In your case, you need to get the mime type of the file then do a switch statement in PHP. You can get the mime type of the file by:

$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;

Learn more: http://www.php.net/manual/en/function.finfo-file.php

Update 2: As pointed out by the comment, replacing switch to array matching is more elegant.

Upvotes: 2

Related Questions