An implementation of the WHATWG Mime Sniffing specification
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
J. King d3f6c03168 Document MIME type group feature 4 years ago
lib MIME group tests 4 years ago
tests More group tests 4 years ago
vendor-bin Initial export from Lax 4 years ago
.gitattributes Initial export from Lax 4 years ago
.gitignore Initial export from Lax 4 years ago
.php_cs.dist Initial export from Lax 4 years ago
AUTHORS Initial export from Lax 4 years ago
CHANGELOG Document MIME type group feature 4 years ago
LICENSE Initial export from Lax 4 years ago
README.md Document MIME type group feature 4 years ago
RoboFile.php Initial export from Lax 4 years ago
composer.json Change Composer description 4 years ago
composer.lock Test and correct ancillary features 4 years ago
robo Initial export from Lax 4 years ago
robo.bat Initial export from Lax 4 years ago

README.md

MIME Sniffing

This library aims to be a complete implementation of the WHATWG Mime Sniffing specification. Presently it only implements MIME type parsing (in other words, MIME sniffing itself is not implemented), but it will be expanded in due course.

Features

Parsing

A MIME type string may be parsed into a structured MimeType instance as follows:

$mimeType = \MensBeam\Mime\MimeType::parse("text/HTML; charSet=UTF-8");
echo $mimeType->type;              // prints "text"
echo $mimeType->subtype;           // prints "html"
echo $mimeType->essence;           // prints "text/html"
echo $mimeType->params['charset']; // prints "UTF-8"

Normalizing

Once parsed, a MimeType instance can be serialized to produce a normalized text representation:

$typeString = 'TeXt/HTML;  CHARset="UTF\-8"; charset=iso-8859-1; unset='; 
$mimeType = \MensBeam\Mime\MimeType::parse($typeString);
echo (string) $mimeType; // prints "text/html;charset=UTF-8"

MIME type groups

The MIME Sniffing specification defines a series of MIME type groups; these are exposed via the boolean properties isArchive, isAudioVideo, isFont, isHtml, isImage, isJavascript, isJson, isScriptable, isXml, and isZipBased. For example:

$mimeType = \MensBeam\Mime\MimeType::parse("image/svg+xml");
var_export($mimeType->isImage);      // prints "true"
var_export($mimeType->isXml);        // prints "true"
var_export($mimeType->isScriptable); // prints "true"
var_export($mimeType->isArchive);    // prints "false"