Home  >  Article  >  Backend Development  >  PHP取二进制文件头高速判断文件类型

PHP取二进制文件头高速判断文件类型

WBOY
WBOYOriginal
2016-06-13 10:56:371038browse

PHP取二进制文件头快速判断文件类型

参考:@黑夜路人

一般我们都是按照文件扩展名来判断文件类型,但是这个很不靠谱,轻易就通过修改扩展名来躲避了,一般必须要读取文件信息来识别。

<?php $files = array('./test.jpg', 'test.png');$fileTypes = array(    7790    => 'exe',    7784    => 'midi',    8075    => 'zip',    8297    => 'rar',    225216  => 'jpg',    7173    => 'gif',    6677    => 'bmp',    13780   => 'png',);foreach($files as $file) {    $fp = fopen($file, 'rb');    $bin = fread($fp, 2); // 只读头两个字节    fclose($fp);    $strInfo = @unpack("C2chars", $bin);    $typeCode = intval($strInfo['chars1'].$strInfo['chars2']);    $fileType = isset($fileTypes[$typeCode]) ? $fileTypes[$typeCode] : 'unknown';    echo $file , ' type : <b>', $fileType, '</b> code : <b>', $fileType, '</b><br>';}
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn