php文件扩展名判断及获取文件扩展名的N种方法


Posted in PHP onSeptember 12, 2015

下面代码是php文件扩展名判断

<!DOCTYPE>
<html>
<head>
 <meta http-equiv="Content-type" content="text/html" charset="utf-8">
 <title>check file</title>
</head>
<body>
<b>文件扩展名验证</b>
<input type="text" name="int" value="文件.php" onblur="check(this)" id="int">
<input type="button" value="检测" onclick="check_value()">
<script>
 function check(obj){
  if(obj.value == "" || obj.value.length<3){
   alert("输入的长度不能小于3且不能为空!");
   obj.focus();
  }
 }
 function check_value(){
  var str = $("int").value;
  var repx = /\.(php|asp|jsp)$/i;
  var type = str.substring(str.lastIndexOf("."),str.length);
  if(type.match(repx) && str.lastIndexOf(".") != -1){
   alert("文件扩展名正确");
   $("int").focus();
  }else{
   alert("文件扩展名有误");
   $("int").focus();
  }
 }
 function $(obj){
  return document.getElementById(obj);
 }
</script>
</body>
</html>

php文件扩展名判断及获取文件扩展名的N种方法

PHP中获取文件扩展名的N种方法

基本上就以下这几种方式:

第1种方法:

function get_extension($file)
{
substr(strrchr($file, '.'), 1);
}

第2种方法:

function get_extension($file)
{
return substr($file, strrpos($file, '.')+1);
}

第3种方法:

function get_extension($file)
{
return end(explode('.', $file));
}

第4种方法:

function get_extension($file)
{
$info = pathinfo($file);
return $info['extension'];
}

第5种方法:

function get_extension($file)
{
return pathinfo($file, PATHINFO_EXTENSION);
}

以上几种方式粗看了一下,好像都行,特别是1、2种方法,在我不知道pathinfo有第二个参数之前也一直在用。但是仔细考虑一下,前四种方法都有各种各样的毛病。要想完全正确获取文件的扩展名,必须要能处理以下三种特殊情况。

没有文件扩展名

路径中包含了字符.,如/home/test.d/test.txt

路径中包含了字符.,但文件没有扩展名。如/home/test.d/test

很明显:1、2不能处理第三种情况,3不能正确处理第一三种情况。4可以正确处理,但是在不存在扩展名时,会发出一个警告。只有第5种方法才是最正确的方法。顺便看一下pathinfo方法。官网上介绍如下:

$file_path = pathinfo('/www/htdocs/your_image.jpg');
echo "$file_path ['dirname']\n";
echo "$file_path ['basename']\n";
echo "$file_path ['extension']\n";
echo "$file_path ['filename']\n"; // only in PHP 5.2+

它会返回一个数组,包含最多四个元素,但是并不会一直有四个,比如在没有扩展名的情况下,就不会有extension元素存在,所以第4种方法才会发现警告。但是phpinfo还支持第二个参数。可以传递一个常量,指定返回某一部分的数据:

PATHINFO_DIRNAME - 目录
PATHINFO_BASENAME - 文件名(含扩展名)
PATHINFO_EXTENSION - 扩展名
PATHINFO_FILENAME - 文件名(不含扩展名,PHP>5.2)

这四个常量的值分别是1、2、4、8,刚开始我还以为可以通过或运算指定多个:

pathinfo($file, PATHINFO_EXTENSION | PATHINFO_FILENAME);

后来发现这样不行,这只会返回几个进行或运算常量中最小的那个。也就是四个标志位中最小位为1的常量。

以上内内容给大家介绍了php文件扩展名判断及获取文件扩展名的N种方法,希望大家喜欢。

PHP 相关文章推荐
PHP用mysql数据库存储session的代码
Mar 05 PHP
ThinkPHP连接数据库及主从数据库的设置教程
Aug 22 PHP
PHP中file_exists()判断中文文件名无效的解决方法
Nov 12 PHP
php实现微信公众平台账号自定义菜单类
Dec 02 PHP
php自动给网址加上链接的方法
Jun 02 PHP
我整理的PHP 7.0主要新特性
Jan 07 PHP
php实现的debug log日志操作类实例
Jul 12 PHP
Windows下php+mysql5.7配置教程
May 16 PHP
PHP设计模式之模板方法模式实例浅析
Dec 20 PHP
PDO::lastInsertId讲解
Jan 29 PHP
laravel 框架结合关联查询 when()用法分析
Nov 22 PHP
PHP 实现 WebSocket 协议原理与应用详解
Apr 22 PHP
php上传功能集后缀名判断和随机命名(强力推荐)
Sep 10 #PHP
ubuntu下配置nginx+php+mysql详解
Sep 10 #PHP
ThinkPHP函数详解之M方法和R方法
Sep 10 #PHP
基于JQuery+PHP编写砸金蛋中奖程序
Sep 08 #PHP
四个常见html网页乱码问题及解决办法
Sep 08 #PHP
php图片水印添加、压缩、剪切的封装类实现
Apr 18 #PHP
php验证码实现代码(3种)
Sep 07 #PHP
You might like
非常好的php目录导航文件代码
2006/10/09 PHP
php在项目中寻找代码的坏味道(综艺命名)
2012/07/19 PHP
php使用array_search函数实现数组查找的方法
2015/06/12 PHP
PHP结合jQuery实现找回密码
2015/07/22 PHP
深入浅析PHP7.0新特征(五大新特征)
2015/10/29 PHP
PHP+MySql实现一个简单的留言板
2020/07/19 PHP
js字符串的各种格式的转换 ToString,Format
2011/08/08 Javascript
JavaScript实现拼音排序的方法
2012/11/20 Javascript
jQuery实现用户注册的表单验证示例
2013/08/28 Javascript
jQuery阻止事件冒泡具体实现
2013/10/11 Javascript
浅析offsetLeft,Left,clientLeft之间的区别
2013/11/30 Javascript
JS根据年月获得当月天数的实现代码
2014/07/03 Javascript
你所未知的3种Node.js代码优化方式
2016/02/25 Javascript
深入浅析JavaScript中的作用域和上下文
2016/03/26 Javascript
简单好用的nodejs 爬虫框架分享
2017/03/26 NodeJs
微信小程序项目实践之验证码倒计时功能
2018/07/18 Javascript
实例讲解JS中pop使用方法
2019/01/27 Javascript
Ajax请求时无法重定向的问题解决代码详解
2019/06/21 Javascript
[01:19:54]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#1Alliance VS EHOME
2016/03/03 DOTA
[01:35:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第一场 1月18日
2021/03/11 DOTA
python将多个文本文件合并为一个文本的代码(便于搜索)
2011/03/13 Python
python进阶教程之异常处理
2014/08/30 Python
编写Python脚本来实现最简单的FTP下载的教程
2015/05/04 Python
web.py 十分钟创建简易博客实现代码
2016/04/22 Python
利用python生成一个导出数据库的bat脚本文件的方法
2016/12/30 Python
Python实现点阵字体读取与转换的方法
2019/01/29 Python
基于python图像处理API的使用示例
2020/04/03 Python
用Python 爬取猫眼电影数据分析《无名之辈》
2020/07/24 Python
使用Python Tkinter实现剪刀石头布小游戏功能
2020/10/23 Python
Python函数调用追踪实现代码
2020/11/27 Python
高三政治教学反思
2014/02/06 职场文书
公务员更新知识培训实施方案
2014/03/31 职场文书
反对邪教标语
2014/06/30 职场文书
建房合同协议书
2016/03/21 职场文书
小学作文指导之如何写人?
2019/07/08 职场文书
nginx七层负载均衡配置详解
2022/07/15 Servers