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.
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"
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"
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"