A WordPress-centric search engine for devs and theme authors



wp_match_mime_types ›

Since2.5.0
Deprecatedn/a
wp_match_mime_types ( $wildcard_mime_types, $real_mime_types )
Parameters: (2)
  • (string|array) $wildcard_mime_types Mime types, e.g. audio/mpeg or image (same as image/*) or flash (same as *flash*).
    Required: Yes
  • (string|array) $real_mime_types Real post mime type values.
    Required: Yes
Returns:
  • (array) array(wildcard=>array(real types)).
Defined at:
Codex:

Check a MIME-Type against a list.

If the wildcard_mime_types parameter is a string, it must be comma separated list. If the real_mime_types is a string, it is also comma separated to create the list.



Source

function wp_match_mime_types( $wildcard_mime_types, $real_mime_types ) {
	$matches = array();
	if ( is_string( $wildcard_mime_types ) ) {
		$wildcard_mime_types = array_map( 'trim', explode( ',', $wildcard_mime_types ) );
	}
	if ( is_string( $real_mime_types ) ) {
		$real_mime_types = array_map( 'trim', explode( ',', $real_mime_types ) );
	}

	$patternses = array();
	$wild = '[-._a-z0-9]*';

	foreach ( (array) $wildcard_mime_types as $type ) {
		$mimes = array_map( 'trim', explode( ',', $type ) );
		foreach ( $mimes as $mime ) {
			$regex = str_replace( '__wildcard__', $wild, preg_quote( str_replace( '*', '__wildcard__', $mime ) ) );
			$patternses[][$type] = "^$regex$";
			if ( false === strpos( $mime, '/' ) ) {
				$patternses[][$type] = "^$regex/";
				$patternses[][$type] = $regex;
			}
		}
	}
	asort( $patternses );

	foreach ( $patternses as $patterns ) {
		foreach ( $patterns as $type => $pattern ) {
			foreach ( (array) $real_mime_types as $real ) {
				if ( preg_match( "#$pattern#", $real ) && ( empty( $matches[$type] ) || false === array_search( $real, $matches[$type] ) ) ) {
					$matches[$type][] = $real;
				}
			}
		}
	}
	return $matches;
}