mensbeam / mimesniff

WHATWG MIME Sniffing 规范的实现

0.2.1 2021-03-07 03:58 UTC

This package is auto-updated.

Last update: 2024-09-07 11:24:03 UTC


README

这个库旨在成为 WHATWG Mime Sniffing 规范 的完整实现。目前它仅实现了 MIME 类型解析(换句话说,MIME sniffing 本身尚未实现),但将逐步扩展。

功能

解析

可以将 MIME 类型字符串解析为结构化的 MimeType 实例,如下所示

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

规范化

一旦解析,MimeType 实例可以序列化为生成规范化文本表示

$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 类型组

MIME Sniffing 规范定义了一系列 MIME 类型组;这些通过布尔属性 isArchiveisAudioVideoisFontisHtmlisImageisJavascriptisJsonisScriptableisXmlisZipBased 公开。例如

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