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脚本的10个技巧(1)
Oct 09 PHP
我的论坛源代码(四)
Oct 09 PHP
php格式化工具Beautify PHP小小BUG
Apr 24 PHP
php实现的简单压缩英文字符串的代码
Apr 24 PHP
基于initPHP的框架介绍
Apr 18 PHP
php gzip压缩输出的实现方法
Apr 27 PHP
php实现设计模式中的单例模式详解
Oct 11 PHP
PHP实现服务器状态监控的方法
Dec 09 PHP
PHP扩展框架之Yaf框架的安装与使用
May 18 PHP
PHP与SQL语句常用大全
Dec 10 PHP
php结合redis高并发下发帖、发微博的实现方法
Dec 15 PHP
laravel中命名路由的使用方法
Feb 24 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按行读取文件时删除换行符的3种方法
2014/05/04 PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
2014/09/10 PHP
向fckeditor编辑器插入指定代码的方法
2007/05/25 Javascript
Javascript String.replace的妙用
2009/09/08 Javascript
js获取单元格自定义属性值的代码(IE/Firefox)
2010/04/05 Javascript
在JQuery dialog里的服务器控件 事件失效问题
2010/12/08 Javascript
window.parent与window.openner区别介绍
2012/04/12 Javascript
JS的replace方法介绍
2012/10/20 Javascript
文本框(input)获取焦点(onfocus)时样式改变的示例代码
2014/01/10 Javascript
javascript自动生成包含数字与字符的随机字符串
2015/02/09 Javascript
JavaScript中解析JSON数据的三种方法
2015/07/03 Javascript
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
2017/05/20 jQuery
详解angularjs跨页面传参遇到的一些问题
2018/11/01 Javascript
微信小程序下拉框组件使用方法详解
2018/12/28 Javascript
JavaScript中import用法总结
2019/01/20 Javascript
vue引入微信sdk 实现分享朋友圈获取地理位置功能
2019/07/04 Javascript
jQuery事件模型默认行为执行顺序及trigger()与 triggerHandler()比较实例分析
2020/04/30 jQuery
Python中使用MELIAE分析程序内存占用实例
2015/02/18 Python
python版本坑:md5例子(python2与python3中md5区别)
2017/06/20 Python
Python 爬虫之超链接 url中含有中文出错及解决办法
2017/08/03 Python
python编程嵌套函数实例代码
2018/02/11 Python
python 矩阵增加一行或一列的实例
2018/04/04 Python
python 给DataFrame增加index行名和columns列名的实现方法
2018/06/08 Python
Python之两种模式的生产者消费者模型详解
2018/10/26 Python
python3+selenium自动化测试框架详解
2019/03/17 Python
python判断所输入的任意一个正整数是否为素数的两种方法
2019/06/27 Python
python numpy之np.random的随机数函数使用介绍
2019/10/06 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
2020/02/18 Python
Python ATM功能实现代码实例
2020/03/19 Python
python使用dlib进行人脸检测和关键点的示例
2020/12/05 Python
详解HTML5中div和section以及article的区别
2015/07/14 HTML / CSS
亚马逊新加坡官方网站:Amazon.sg
2020/03/25 全球购物
《小猫刮胡子》教学反思
2014/02/21 职场文书
创业大赛策划书
2014/03/01 职场文书
何玥事迹观后感
2015/06/16 职场文书
PyTorch中permute的使用方法
2022/04/26 Python