Skip to content

noresources/ns-php-mediatype

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NoreSources MediaType

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

About

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

Resources

License

Stars

Watchers

Forks

Packages

No packages published