[函数] PHP取二进制文件头快速判断文件类型

简介: 一般我们都是按照文件扩展名来判断文件类型,但其实不太靠谱,因为可以通过修改扩展名来伪装文件类型。其实我们可以通过读取文件信息来识别,比如 PHP扩展中提供了类似 exif_imagetype 这样的函数读取图片类的文件类型,但是很多时候扩展不一定安装了这样的扩展。
一般我们都是按照文件扩展名来判断文件类型,但其实不太靠谱,因为可以通过修改扩展名来伪装文件类型。
其实我们可以通过读取文件信息来识别,
比如 PHP扩展中提供了类似 exif_imagetype 这样的函数读取图片类的文件类型,但是很多时候扩展不一定安装了这样的扩展。
下面这个函数就展示了自己通过读取文件头信息来识别文件的真实类型:
  1. function file_type($file) {
  2.         $filepath = realpath($file);
  3.         $filetype = array(
  4.                 7790=>'exe', 7784=>'midi',
  5.                 8075=>'zip', 8297=>'rar',
  6.                 7173=>'gif', 6677=>'bmp', 13780=>'png', 255216=>'jpg'
  7.         );
  8.         if (!($fp = @fopen($filepath, 'rb'))) return false;
  9.         $bin = fread($fp, 2);
  10.         fclose($fp);
  11.         $str_info = @unpack('C2chars', $bin);
  12.         $str_code = intval($str_info['chars1'].$str_info['chars2']);
  13.         return isset($filetype[$str_code]) ? $filetype[$str_code] : 'unknown';
  14. }
复制代码
目录
相关文章
|
30天前
|
PHP 开发者
深入理解PHP7的返回类型声明
【2月更文挑战第29天】 在PHP 7中,一个新的特性被引入,即返回类型声明。这是一个强大的工具,它允许开发者明确指定函数或方法应返回的数据类型。本文将探讨这一特性的基本用法,以及如何利用它来提高代码的可读性和健壮性。
|
1月前
|
存储 数据处理 PHP
PHP变量类型
PHP变量类型
18 0
php案例:加限定条件(只找某个路径下自己所需要的文件类型的信息)
php案例:加限定条件(只找某个路径下自己所需要的文件类型的信息)
php案例:加限定条件(只找某个路径下自己所需要的文件类型的信息)
原生php实现自定义表单(支持基本类型+file类型(单文件上传))
原生php实现自定义表单(支持基本类型+file类型(单文件上传))
原生php实现自定义表单(基础类型)(特色:防止重复提交 防止输出空数据等等功能)
原生php实现自定义表单(基础类型)(特色:防止重复提交 防止输出空数据等等功能)
原生php实现自定义表单(基础类型)(特色:防止重复提交 防止输出空数据等等功能)
|
9月前
|
JSON PHP 计算机视觉
php百度人脸识别param[image_template] is null使用BASE64图片类型json_decode返回NULL的处理解决方案
php百度人脸识别param[image_template] is null使用BASE64图片类型json_decode返回NULL的处理解决方案
91 0
|
9月前
|
PHP 计算机视觉
php利用百度人脸识别实现人脸融合的解决方案(1)image_type为URL类型
php利用百度人脸识别实现人脸融合的解决方案(1)image_type为URL类型
71 0
|
PHP
PHP:变量类型获取和数据类型转换
PHP:变量类型获取和数据类型转换
75 0
|
PHP 开发者
PHP中的伪类型是干什么的?底层原理是什么?
PHP中的伪类型是干什么的?底层原理是什么?
|
存储 PHP
PHP中的复合类型数据是什么意思?底层原理是什么?
PHP中的复合类型数据是什么意思?底层原理是什么?
116 0