An implementation of the WHATWG Mime Sniffing specification
lib | ||
tests | ||
vendor-bin | ||
.gitattributes | ||
.gitignore | ||
.php_cs.dist | ||
AUTHORS | ||
CHANGELOG | ||
composer.json | ||
composer.lock | ||
LICENSE | ||
README.md | ||
robo | ||
robo.bat | ||
RoboFile.php |
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"