[函数] 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. }
复制代码
目录
相关文章
|
4月前
|
PHP 开发者
深入理解PHP7中的返回类型声明
【4月更文挑战第25天】本文将详细解析PHP7中新引入的返回类型声明特性,包括其基本用法、使用场景以及可能遇到的问题。通过实例代码,帮助读者深入理解和掌握这一强大的新特性。
|
4月前
|
PHP 开发者
深入理解PHP7的返回类型声明
【2月更文挑战第29天】 在PHP 7中,一个新的特性被引入,即返回类型声明。这是一个强大的工具,它允许开发者明确指定函数或方法应返回的数据类型。本文将探讨这一特性的基本用法,以及如何利用它来提高代码的可读性和健壮性。
|
1月前
|
缓存 前端开发 API
PHP 适合做什么类型的项目
【8月更文挑战第4天】PHP 适合做什么类型的项目
45 4
ly~
|
1天前
|
存储 供应链 小程序
除了微信小程序,PHP 还可以用于开发哪些类型的小程序?
除了微信小程序,PHP 还可用于开发多种类型的小程序,包括支付宝小程序、百度智能小程序、抖音小程序、企业内部小程序及行业特定小程序。在电商、生活服务、资讯、工具、娱乐、营销等领域,PHP 能有效管理商品信息、订单处理、支付接口、内容抓取、复杂计算、游戏数据、活动规则等多种业务。同时,在企业内部,PHP 可提升工作效率,实现审批流程、文件共享、生产计划等功能;在医疗和教育等行业,PHP 能管理患者信息、在线问诊、课程资源、成绩查询等重要数据。
ly~
19 6
|
3月前
|
存储 安全 PHP
安全开发-PHP应用&文件管理模块&显示上传&黑白名单类型过滤&访问控制&文件管理模块&包含&上传&遍历&写入&删除&下载&安全
安全开发-PHP应用&文件管理模块&显示上传&黑白名单类型过滤&访问控制&文件管理模块&包含&上传&遍历&写入&删除&下载&安全
|
4月前
|
Linux PHP 数据安全/隐私保护
深入理解PHP7的返回值类型声明深入理解 Linux 文件系统的权限管理
【5月更文挑战第30天】在PHP7中,引入了返回值类型声明的特性。这一特性使得开发者可以在函数定义时指定函数应返回的值的类型。本文将详细解析返回值类型声明的用法,以及它在实际开发中的应用,帮助读者更好地理解和使用这一特性。
|
4月前
|
程序员 PHP
深入理解PHP7的返回类型声明
【5月更文挑战第28天】在PHP7中,添加了一项新特性——返回类型声明。这是PHP强类型变量的一个扩展,可以强制函数返回特定的类型。本文将详细介绍这一特性,并解释其如何影响代码编写和性能优化。
|
4月前
|
PHP 开发者
深入理解PHP7的返回类型声明
【5月更文挑战第27天】 在PHP7中,引入了一项新的语言特性——返回类型声明。这一功能允许开发者在函数定义时明确指定函数应返回的数据类型,从而提升代码的可读性和健壮性。本文将深入探讨返回类型声明的概念、用法以及其对现有PHP项目的影响,旨在为PHP开发者提供一份详细的技术解析和实践指南。
|
4月前
|
安全 编译器 API
深入理解PHP7中的返回类型声明
【5月更文挑战第12天】 在面向对象编程中,明确函数和方法是关键。而PHP7引入的返回类型声明特性,为开发者提供了一种强大的工具来增强代码的清晰度和可靠性。本文将深入探讨PHP7返回类型声明的概念、用法以及它如何帮助我们编写更加健壮和易于维护的代码。
|
4月前
|
PHP 开发者
深入理解PHP7的返回类型声明
【5月更文挑战第11天】 在PHP 7中,引入了一项新的语言特性 - 返回类型声明。这一特性允许开发者在函数定义时指定预期的返回值类型,从而增强代码的可读性和健壮性。本文将探讨返回类型声明的概念、语法、优势以及在实际开发中的应用,帮助读者更深入地理解并有效运用这一新特性。