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 5.0对象模型深度探索之类的静态成员
Mar 27 PHP
追求程序速度,而不是编程的速度
Apr 23 PHP
隐性调用php程序的方法
Mar 09 PHP
PHP Memcached + APC + 文件缓存封装实现代码
Mar 11 PHP
php分页思路以及在ZF中的使用
May 30 PHP
php将字符串转化成date存入数据库的两种方式
Apr 28 PHP
php中使用PHPExcel读写excel(xls)文件的方法
Sep 15 PHP
thinkPHP使用post方式查询时分页失效的解决方法
Dec 09 PHP
关于扩展 Laravel 默认 Session 中间件导致的 Session 写入失效问题分析
Jan 08 PHP
PHP不使用内置函数实现字符串转整型的方法示例
Jul 03 PHP
php用户名的密码加密更安全的方法
Jun 21 PHP
thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例
Jul 03 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
优化NFR之一 --MSSQL Hello Buffer Overflow
2006/10/09 PHP
判“新”函数:得到今天与明天的秒数
2006/10/09 PHP
discuz程序的PHP加密函数原理分析
2011/08/05 PHP
php读取二进制流(C语言结构体struct数据文件)的深入解析
2013/06/13 PHP
php GUID生成函数和类
2014/03/10 PHP
PHP图像处理之imagecreate、imagedestroy函数介绍
2014/11/19 PHP
PHP开发注意事项总结
2015/02/04 PHP
javascript IFrame 强制刷新代码
2009/07/23 Javascript
基于JQuery的浮动DIV显示提示信息并自动隐藏
2011/02/11 Javascript
jquery创建一个ajax关键词数据搜索实现思路
2013/02/26 Javascript
jquery实现点击其他区域时隐藏下拉div和遮罩层的方法
2015/12/23 Javascript
Bootstrap分页插件之Bootstrap Paginator实例详解
2016/10/15 Javascript
JS控件bootstrap datepicker使用方法详解
2017/03/25 Javascript
浅谈Webpack核心模块tapable解析
2018/09/11 Javascript
详解js实时获取并显示当前时间的方法
2019/05/10 Javascript
JavaScript中如何调用Java方法
2020/09/16 Javascript
python 限制函数执行时间,自己实现timeout的实例
2019/01/12 Python
pytorch 准备、训练和测试自己的图片数据的方法
2020/01/10 Python
TensorFlow2.0矩阵与向量的加减乘实例
2020/02/07 Python
Python字典添加,删除,查询等相关操作方法详解
2020/02/07 Python
Keras Convolution1D与Convolution2D区别说明
2020/05/22 Python
Order by的几种用法
2013/06/16 面试题
Linux内核的同步机制是什么?主要有哪几种内核锁
2016/07/11 面试题
物业电工岗位职责
2013/11/20 职场文书
《海底世界》教学反思
2014/04/16 职场文书
搞笑车尾标语
2014/06/23 职场文书
2014年基建工作总结
2014/12/12 职场文书
运动会闭幕词
2015/01/28 职场文书
质量负责人岗位职责
2015/02/15 职场文书
学校党支部公开承诺书
2015/04/30 职场文书
2015年党风廉政建设目标责任书
2015/05/08 职场文书
在职证明格式样本
2015/06/15 职场文书
小学生作文之《压岁钱的烦恼》
2019/09/27 职场文书
Python Pycharm虚拟下百度飞浆PaddleX安装报错问题及处理方法(亲测100%有效)
2021/05/24 Python
判断Python中的Nonetype类型
2021/05/25 Python
Spring Boot 排除某个类加载注入IOC的操作
2021/08/02 Java/Android