`

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

阅读更多

转载链接:http://blog.csdn.net/yanfangphp/article/details/8633896

转载内容:

PHP中获取文件扩展名的方法,从网上收罗的,基本上就以下这几种方式:

//第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有第二个参数之前也一直在用。但是仔细考虑一下,前四种方法都有各种各样的毛病。要想完全正确获取文件的扩展名,必须要能处理以下三种特殊情况:

1、没有文件扩展名
2、路径中包含了字符.,如/home/test.d/test.txt
3、路径中包含了字符.,但文件没有扩展名。如/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文件扩展名判断 <!DOCTYPE> <html> <head> <meta http-equiv="Content-type" content="text/html" charset="utf-8"> <title>check file</title> </head> &...

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

    PHP中获取文件扩展名的N种方法 从网上收罗的,基本上就以下这几种方式

    PHP 文件类型判断代码

    何为MIME类型,它是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问时,浏览器会自动使用指定应用程序来打开。 多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。 参考...

    xheditor-1.1.14

    upLinkExt:超链接上传前限制本地文件扩展名 参数值:超链接上传前限制的文件扩展名列表,默认为:zip,rar,txt,建议与服务端扩展名检查列表一致 upImgUrl:图片文件上传接收URL 参数值:接收用户上传的服务器端程序...

    网管教程 从入门到精通软件篇.txt

    ★★★常见文件扩展名和它们的说明 常见文件扩展名和它们的说明 A ACE:Ace压缩档案格式 ACT:Microsoft office助手文件 AIF,AIFF:音频互交换文件,Silicon Graphic and Macintosh应用程序的声音格式 ANI:...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    我假定在你的服务器上所有PHP文件的扩展名为.php3。 2.2 PHP的安装 生成一个名为test.php3的文件,含有以下内容: (); ?> 然后在你的浏览器中打开此文件。看看这个页面你就知道你的PHP安装使用的选项了。 2.3 ...

    Editplus 3[1].0

    ③ “文件-新建-text”,就可以建立一个空的文本文件,保存时,这个文件自动带有扩展名".txt",也就避免了令人头疼的确认 ④ 模板设置文件名称为“template.ini”,如果和主程序同一路径,可以使用相对路径 罗嗦了...

    editplus 代码编辑器html c++ jsp css

    ③ “文件-新建-text”,就可以建立一个空的文本文件,保存时,这个文件自动带有扩展名".txt",也就避免了令人头疼的确认 ④ 模板设置文件名称为“template.ini”,如果和主程序同一路径,可以使用相对路径 罗嗦了...

    PHP程序开发范例宝典III

    实例030 获取文件域的值 42 2.2 动态添加表单元素 42 实例031 不提交表单获取单选按钮的值 43 实例032 选中单选按钮后显示其他表单元素 44 实例033 根据数据表结构自动生成数据录入页面 45 实例034 投票...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例134 获取数组当前的键名和值 162 实例135 检测数组中是否存在某个值 163 实例136 获取数组中的当前单元 164 实例137 从数组中随机取出元素 165 实例138 合并数组 166 实例139 拆分数组 167 实例140 遍历数组 168...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例134 获取数组当前的键名和值 162 实例135 检测数组中是否存在某个值 163 实例136 获取数组中的当前单元 164 实例137 从数组中随机取出元素 165 实例138 合并数组 166 实例139 拆分数组 167 实例140 遍历数组 168...

    EditPlus 2整理信箱的工具

    ③ “文件-新建-text”,就可以建立一个空的文本文件,保存时,这个文件自动带有扩展名".txt",也就避免了令人头疼的确认 ④ 模板设置文件名称为“template.ini”,如果和主程序同一路径,可以使用相对路径 罗嗦了...

    PHP 面向对象技术(全面讲解).txt

    上面看到PHP 对象中的成员有两种一种是成员属性,一种是成员方法。对象我们以经可以声明 了,$p1=new Person();怎么去使用对象的成员呢?要想访问对象中的成员就要使用一个特殊的操 作符“->”来完成对象成员的访问...

    大名鼎鼎SWFUpload- Flash+JS 上传

    它结合了FLASH和JavaScript的功能,以提供一种超越了传统的浏览器中标签提供的文件上传功能。 SWFUpload提供的主要功能: 在文件选择对话框中能够进行文件多选 页面无刷新的上传 提供上传进度的事件回调,实时...

    scws23-php

    其它:在 segment() 方法执行结束后调用 get_statistics() 方法获取统计信息。 Array &get_statistics(void); 说明:返回上次 segment() 调用的分词结果的各词汇出现的次数及位置信息(引用返回)。 参数:无。 ...

    pscws23-20081221.tar.bz2【中文分词】

    其它:在 segment() 方法执行结束后调用 get_statistics() 方法获取统计信息。 Array &get_statistics(void); 说明:返回上次 segment() 调用的分词结果的各词汇出现的次数及位置信息(引用返回)。 参数:无。 ...

    grub4dos-V0.4.6a-2017-02-04更新

    根据短文件名偏移 0x0c 处:位 3=1 表示文件名小写,位 4=1 表示文件扩展名小写。 4.可以正确识别 mkisofs 2.00/2.01 生成有 bug 的 Joliet 格式光盘。 2013-10-18 1.新增功能类似CMD的PATHEXT,可以设置默认的...

    华西网源码

    DIY文件的导入方法这里不多说了,至于DIY文件对应的各个栏目频道这里也不多说什么,都是中文命名的: 友情提醒:如果不修改DIY框架的情况下,尽量使用简洁模式修改调整DIY数据调用,这样变形没有这么严重 +-------...

Global site tag (gtag.js) - Google Analytics