Pberndt V4

Direkt zum Inhalt springen


Quellcode MIME Typ.php

Beschreibung

Funktion zum ermitteln des MIME-Typs, falls mime_content_type nicht verfügbar ist. Erfordert eine magic.mime Datei.

Sourcecode

<?php

    /*
        Magic Mime File Interpreter

        Aktion: PHP Scripte für die armen dieser Welt
        Der Erlös geht für mein Pausenbrot drauf

        Copyright (c) 2004 by Phillip 'Firebird' Berndt
    */

   
    if(!function_exists('mime_content_type'))
    {
        function mime_content_type($file)
        {
            static $mimeData;
           
            if(!isset($mimeData))
            {
                $mimeFile = file('./magic.mime');
               
                foreach($mimeFile as $mimeLine)
                    if($mimeLine[0] != '#' && trim($mimeLine))
                    {
                        if(preg_match('/^(\S+?)\s+(\S+?)\s+(\S+)(\s+(.+?))?$/si', $mimeLine, $regex_mimeDataSet))
                        {
                            $mimeDataSet['offset'] = str_replace('>', '', $regex_mimeDataSet[1]);
                            $indicator = $regex_mimeDataSet[3];
                            switch($regex_mimeDataSet[2])
                            {
                                case 'string':
                                    $indicator = str_replace('\ ', ' ', $indicator);
                                    $indicator = str_replace('\<', '<', $indicator);
                                    $indicator = str_replace('\>', '>', $indicator);
                                    $indicator = str_replace('\r', "\r", $indicator);
                                    $indicator = str_replace('\n', "\n", $indicator);
                                    $indicator = preg_replace('/\\\\([0-9]{3})/e', 'chr($1);', $indicator);
                                    break;
                                case 'byte':
                                    $indicator = pack('c', @eval('return '.$indicator.';'));
                                    break;
                                case 'short':
                                    $indicator = pack('s', @eval('return '.$indicator.';'));
                                    break;
                                case 'beshort':
                                    $indicator = pack('n', @eval('return '.$indicator.';'));
                                    break;
                                case 'leshort':
                                    $indicator = pack('v', @eval('return '.$indicator.';'));
                                    break;
                                case 'belong':
                                    $indicator = pack('N', @eval('return '.$indicator.';'));
                                    break;
                                case 'lelong':
                                    $indicator = pack('V', @eval('return '.$indicator.';'));
                                    break;
                                case 'long':
                                    $indicator = pack('l', @eval('return '.$indicator.';'));
                                    break;
                            }
                           
                            $mimeDataSet['indicator']    = $indicator;
                            $mimeDataSet['mime']        = str_replace("\r", '', $regex_mimeDataSet[5]);
                           
                            $mimeData[] = $mimeDataSet;
                        }               
                    }
            }
           
                           
            $file_content = file_get_contents($file);
           
            $retVal = 'application/x-object';
            foreach($mimeData as $key => $mimeTest)
            {           
                $testStr = substr($file_content, $mimeTest['offset'], strlen($mimeTest['indicator']));
               
                if($testStr == $mimeTest['indicator'])
                {
                    $mimeType = $mimeTest['mime'];
                    if($mimeType == '')
                    {
                        while($mimeType == '')
                            $mimeType = $mimeData[++$key]['mime'];   
                    }
                   
                    $retVal = $mimeType;
                }
            }
           
            return $retVal;
        }
    }
   
    echo(mime_content_type('./testsvr.zip').'<br/>'); // Gibt application/x-zip aus
    echo(mime_content_type('./Beispiel.jpg').'<br/>'); // Gibt image/jpeg aus
    echo(mime_content_type('./winkel_wurf.fla').'<br/>'); // Gibt application/x-object aus
    echo(mime_content_type('./bzcat.exe').'<br/>'); // Gibt application/x-dosexec
    echo(mime_content_type('./option_group.htm').'<br/>'); // Gibt text/html aus
    echo(mime_content_type(__FILE__).'<br/>'); // Gibt application/x-httpd-php-5 aus
   

?>

Download

Dateiname
MIME Typ.php
Größe
4.55kb