この記事では、ユーザーが投稿したファイルのヘッダー情報に基づいてファイルの種類を確認できる、PHP ファイルの種類の検出方法 (ファイル ヘッダー情報に基づく) を提供します。
この記事では、ファイルの種類を(ファイルのヘッダー情報に基づいて)検出するための PHP チュートリアルを提供します。これは、ユーザーが投稿したファイルのヘッダー情報に基づいてファイルの種類を確認できます。
/*ファイル名からファイルの種類を取得*
*@author chengmo*
*@copyright cnblog.com/chengmo 2010-10-17
*@version 0.1
*$filename="d : /1.png";echo cfiletypecheck::getfiletype($filename); Print: png
*/
class cfiletypecheck
{
private static $_typelist=array();
private static $checkclass=null;
private function __construct ( $filename)
{
self::$_typelist=$this->gettypelist();
/**
*プロセスファイルタイプマッピングテーブル*
*
* @param string $filename ファイルタイプ
* @return string ファイルタイプ、見つかりません return: other
*/
プライベート関数 _getfiletype($filename)
{
$filetype="other" ;
if(!file_exists($filename)) 新しい例外をスロー("ファイルが見つかりません!");
$file = @fopen($filename,"rb");
if(!$file) 新しい例外をスローします。 file拒否!");
$bin = fread($file, 15); //異なるファイルタイプでは15バイトのみが読み取られ、ヘッダー情報も異なります。
fclose($file);
$typelist=self::$_typelist;
foreach ($typelist として $v)
{
$blen=strlen(pack("h*",$v[0])); /ファイルヘッダーにマークされているバイト数を取得します
$tbin=substr($bin,0,intval($blen)) ///ファイルヘッダーの長さを比較する必要があります
if(strto lower($v[0 ])==strto lower(array_shift) (unpack("h*",$tbin))))
{
return $v[1]
}
}
return $filetype
/**
*ファイルヘッダーとファイルタイプのマッピングテーブルを取得*
*
* @return array array(array('key',value)...)
*/
パブリック関数 gettypelist()
{
return array(array("ffd8ffe1","jpg"),
array("89504e47","png"),
array("47494638","gif"),
array("49492a00","tif "),
array("424d","bmp"),
array("41433130","dwg"),
array("38425053","ps チュートリアル d"),
array( "7b5c727466"、 "rtf")、
ray( "3c3f786d6c"、 "xml")、
ray( "68746d6c3e"、 "html")、
ray( "44656c697665727272d646174" "cfad12fec5fd746f","d bx") 、
array("2142444e","pst")、
array("d0cf11e0","xls/doc")、
array("5374616e64617264204a","mdb")、
array ("ff575043","wpd") 、
array("252150532d41646f6265","eps/ps")、
array("255044462d312e","pdf")、
array("e3828596","pwl")、
array ("504b0304","zip") 、
array("52617221","rar")、
array("57415645","wav")、
array("41564920","avi")、
array(" 2e7261fd","ram")、
array("2e524d46","rm")、
array("000001ba","mpg")、
array("000001b3","mpg")、
array("6d6f6f76") ,"mov"),
array( "3026b2758e66cf11","asf"),
array("4d546864","mid"))
}
public static function getfiletype($filename)
{
if(!self: :$checkclass) self::$checkclass =新しい self($filename);
$class=self::$checkclass;
}
}
www.bkjia.com