noresources/ns-php-mediatype

Media Type parsing and manipulation library

v1.7.1 2024-01-27 15:09 UTC

README

RFC 6838 Media Type (MIME type) parsing and comparison.

Installation

composer require noresources/ns-php-mediatype ~1.0

Usage

use NoreSources\MediaType\MediaType;�
use NoreSources\MediaType\MediaTypeFactory;�
use NoreSources\MediaType\MediaRange;

$factory = MediaTypeFactory::getInstance ();
$mediaType = $factory->createFromString ('text/vnd.noresources.incredibly.flexible+xml');

var_dump ($mediaType->getMainType()); i       // "text"
var_dump ($mediaType->getStructuredSyntax()); // "xml"

$subType = $mediaType->getSubType ();
var_dump (\strval ($subType));                // "vnd.noresources.incredibly.flexible+xml"
var_dump ($subType->getFacets());             // [ "vnd", "noresources", "incredibly", "flexible" ]


// From a file or a stream
$mediaType = $factory->createFromMedia ('path/to/filename.html');
var_dump (\strval ($mediaType)); // "text/html"

// Media range is also recognized
$range = $factory->createFromString ('image/*');

// Comparing
$html = $factory->createFromString ('text/html');
$anyText = $factory->createFromString ('text/*');
$any = $factory->createFromString ('*/*');

var_dump ([
	'text/html vs text/*' => MediaRange::compare ($html, $anyText),
	'text/* vs */*' => MediaRange::compare ($anyText, $any),
	'*/* vs text/html' => MediaRange::compare ($any, $html)
]);

/* 
array(3) {
  ["text/html vs text/*"]=> int(1)
  ["text/* vs */*"]=> int(1)
  ["*/* vs text/html"]=> int(-1)
}
*/

References