php 如何获取文件的后缀名


Posted in PHP onJune 05, 2016

比如图片文件的后缀,jpg或gif等

有两个方法

一,假如$img为图片文件名

$img=12345.gif;
$img_ext = substr($img, strrpos($img, '.'));

二,用到php数组,先把文件名字符串读取到数组中

$ext2=explode(".",$img);
      $count=count($ext2);
      $count2=$count-1;
      $file_name  = $urlstr .'.'.$ext2[$count2];//得到后缀并重新定义新的文件名$file_name

 另外附上其他小伙伴总结出来的方法:

第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 相关文章推荐
PHP4中实现动态代理
Oct 09 PHP
如何在PHP中使用Oracle数据库(6)
Oct 09 PHP
关于Appserv无法打开localhost问题的解决方法
Oct 16 PHP
php中经典方法实现判断多维数组是否为空
Oct 23 PHP
Yii操作数据库的3种方法
Mar 11 PHP
PHP+jQuery 注册模块开发详解
Oct 14 PHP
php常用的url处理函数总结
Nov 19 PHP
微信公众号开发客服接口实例代码
Oct 21 PHP
PHP最常用的正则表达式
Feb 13 PHP
php实现基于PDO的预处理示例
Mar 28 PHP
php使用ftp实现文件上传与下载功能
Jul 21 PHP
PHP parse_ini_file函数的应用与扩展操作示例
Jan 07 PHP
PHP常用文件操作函数和简单实例分析
Jun 03 #PHP
PHP读取大文件末尾N行的高效方法推荐
Jun 03 #PHP
PHP中读取文件的几个方法总结(推荐)
Jun 03 #PHP
PHP学习笔记之php文件操作
Jun 03 #PHP
ThinkPHP3.2.3实现分页的方法详解
Jun 03 #PHP
php for 循环使用的简单实例
Jun 02 #PHP
Yii多表联合查询操作详解
Jun 02 #PHP
You might like
德劲1103二次变频版的打磨
2021/03/02 无线电
PHP下用rmdir实现删除目录的三种方法小结
2008/04/20 PHP
php下正则来匹配dede模板标签的代码
2010/08/21 PHP
php学习笔记 PHP面向对象的程序设计
2011/06/13 PHP
php网站判断用户是否是手机访问的方法
2013/11/01 PHP
WordPress自定义时间显示格式
2015/03/27 PHP
php强大的时间转换函数strtotime
2016/02/18 PHP
PHP+JS三级菜单联动菜单实现方法
2016/02/24 PHP
用JavaScript获取网页中的js、css、Flash等文件
2006/12/20 Javascript
基于mootools插件实现遮罩层新手引导
2012/05/24 Javascript
使用ajaxfileupload.js实现ajax上传文件php版
2014/06/26 Javascript
jquery操作select方法汇总
2015/02/05 Javascript
利用jQuery实现CheckBox全选/全不选/反选的简单代码
2016/05/31 Javascript
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
URL中“#” “?” &“”号的作用浅析
2017/02/04 Javascript
详解vue.js的devtools安装
2017/05/26 Javascript
js简易版购物车功能
2017/06/17 Javascript
javaScript实现滚动条事件详解
2020/03/24 Javascript
vue2.0的虚拟DOM渲染思路分析
2018/08/09 Javascript
[01:14]2019完美世界城市挑战赛(秋季赛)全国总决赛精彩花絮
2020/01/08 DOTA
Python实现进程同步和通信的方法
2018/01/02 Python
python画出三角形外接圆和内切圆的方法
2018/01/25 Python
pandas 将list切分后存入DataFrame中的实例
2018/07/03 Python
使用python的pandas为你的股票绘制趋势图
2019/06/26 Python
关于Python中定制类的比较运算实例
2019/12/19 Python
html5-canvas中使用clip抠出一个区域的示例代码
2018/05/25 HTML / CSS
Easy Spirit官网:美国休闲鞋履中的代表品牌
2019/04/12 全球购物
婚礼新郎父母答谢词
2014/01/16 职场文书
安全承诺书范文
2014/03/26 职场文书
优秀教导主任事迹材料
2014/05/09 职场文书
离婚协议书样本
2015/01/26 职场文书
go语言基础 seek光标位置os包的使用
2021/05/09 Golang
浅谈由position属性引申的css进阶讨论
2021/05/25 HTML / CSS
JavaWeb 入门:Hello Servlet
2021/07/16 Java/Android
分享提高 Python 代码的可读性的技巧
2022/03/03 Python
Hive导入csv文件示例
2022/06/25 数据库