Created
July 2, 2014 10:34
-
-
Save egulhan/46cec8fa0dad0a963d73 to your computer and use it in GitHub Desktop.
Learn mime-types from extension name and vice-versa in PHP
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* | |
* @source http://stackoverflow.com/questions/1147931/how-do-i-determine-the-extensions-associated-with-a-mime-type-in-php | |
*/ | |
function system_extension_mime_types() { | |
# Returns the system MIME type mapping of extensions to MIME types, as defined in /etc/mime.types. | |
$out = array(); | |
$file = fopen('/etc/mime.types', 'r'); | |
while(($line = fgets($file)) !== false) { | |
$line = trim(preg_replace('/#.*/', '', $line)); | |
if(!$line) | |
continue; | |
$parts = preg_split('/\s+/', $line); | |
if(count($parts) == 1) | |
continue; | |
$type = array_shift($parts); | |
foreach($parts as $part) | |
$out[$part] = $type; | |
} | |
fclose($file); | |
return $out; | |
} | |
function system_extension_mime_type($file) { | |
# Returns the system MIME type (as defined in /etc/mime.types) for the filename specified. | |
# | |
# $file - the filename to examine | |
static $types; | |
if(!isset($types)) | |
$types = system_extension_mime_types(); | |
$ext = pathinfo($file, PATHINFO_EXTENSION); | |
if(!$ext) | |
$ext = $file; | |
$ext = strtolower($ext); | |
return isset($types[$ext]) ? $types[$ext] : null; | |
} | |
function system_mime_type_extensions() { | |
# Returns the system MIME type mapping of MIME types to extensions, as defined in /etc/mime.types (considering the first | |
# extension listed to be canonical). | |
$out = array(); | |
$file = fopen('/etc/mime.types', 'r'); | |
while(($line = fgets($file)) !== false) { | |
$line = trim(preg_replace('/#.*/', '', $line)); | |
if(!$line) | |
continue; | |
$parts = preg_split('/\s+/', $line); | |
if(count($parts) == 1) | |
continue; | |
$type = array_shift($parts); | |
if(!isset($out[$type])) | |
$out[$type] = array_shift($parts); | |
} | |
fclose($file); | |
return $out; | |
} | |
function system_mime_type_extension($type) { | |
# Returns the canonical file extension for the MIME type specified, as defined in /etc/mime.types (considering the first | |
# extension listed to be canonical). | |
# | |
# $type - the MIME type | |
static $exts; | |
if(!isset($exts)) | |
$exts = system_mime_type_extensions(); | |
return isset($exts[$type]) ? $exts[$type] : null; | |
} | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment