Model to validate media types (follows RFC6838).
composer install innmind/media-type
use Innmind\MediaType\MediaType;
$type = MediaType::of('application/json+some-extension; charset=utf-8');
$type->topLevel(); // application
$type->subType(); // json
$type->suffix(); // some-extension
$type->parameters()->first()->name(); // charset
$type->parameters()->first()->value(); // utf-8
$type->toString(); // application/json+some-extension; charset=utf-8
If the values are incorrect it will throw an exception. Or you can use MediaType::maybe()
that will return an instance of Innmind\Immutable\Maybe
.