Skip to content
/ mime Public

An implementation of the WHATWG MIME Sniffing specification. Please direct your issues at the link below.

License

Notifications You must be signed in to change notification settings

mensbeam/mime

Repository files navigation

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"

About

An implementation of the WHATWG MIME Sniffing specification. Please direct your issues at the link below.

Topics

Resources

License

Stars

Watchers

Forks