A media / MIME type lookup tool
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
assets
scripts
src
tests
.gitignore
LICENSE
README.md
composer.json

README.md

A media / MIME type lookup tool

This PHP 7.1 library provides tools to lookup Media Types (formerly known as MIME types). The library uses an internal list of media types generated from Apache's httpd MIME type list. Apache's list itself is generated using the IANA official media types repository.

The media types list is loaded once in memory. You can instantiate the class or call MediaTypes::getMediaTypes() has many time as you want, no time will be lost reparsing the JSON list.

Usage

<?php
use CodeInc\MediaTypes\MediaTypes;

// looking up the media type of a file, a path or an URL 
// (or anything finishing by an extension)
MediaTypes::getFilenameMediaType('/path/to/a/picture.jpg'); // -> 'image/jpeg'

// looking up the media type for an extension
MediaTypes::getExtensionMediaType('jpg'); // -> 'image/jpeg'

// listing all known extensions for a media type
MediaTypes::getMediaTypeExtensions('image/jpeg'); // -> ['jpeg', 'jpg', 'jpe']

// listing all media types
var_dump(MediaTypes::getMediaTypes()); // assoc array

// searching for media types using a shell pattern 
var_dump(MediaTypes::searchMediaTypes('image/*'); // -> assoc array

The class implements IteratorAggregate an is iterable:

<?php
use CodeInc\MediaTypes\MediaTypes;

// listing all types
foreach (new MediaTypes() as $extension => $mediaType) {
	var_dump($extension, $mediaType);
}

The class implements ArrayAccess and can be used as an array :

<?php
use CodeInc\MediaTypes\MediaTypes;
$mediaTypes = new MediaTypes();

// you can test the existence or either an extension or a media type
var_dump(isset($mediaTypes['jpg'])); // -> true
var_dump(isset($mediaTypes['image/jpeg'])); // -> true
var_dump(isset($mediaTypes['a-fake/media-type'])); // -> false

// you can access an extension's media type
var_dump($mediaTypes['jpg']); // -> 'image/jpeg'

// and a media type's extensions
var_dump($mediaTypes['image/jpeg']); // -> ['jpeg', 'jpg', 'jpe']

// if the type does not exist, the value is null
var_dump($mediaTypes['a-fake/media-type']; // -> null

Installation

This library is available through Packagist and can be installed using Composer:

composer require codeinc/media-types

Updating the internal media types list

You can regenerate the internal media types list using the provided scripts/generate-media-types-list.php script. The script is fetches the list from Apache's Subversion server (here), parses it and generates the local assets/media-types.json file.

php scripts/generate-media-types-list.php

License

The library is published under the MIT license (see LICENSE file).