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 相关文章推荐
PHP 异步执行方法,模拟多线程的应用分析
Jun 03 PHP
php接口和抽象类使用示例详解
Mar 02 PHP
一个经典的PHP文件上传类分享
Nov 18 PHP
php使用function_exists判断函数可用的方法
Nov 19 PHP
Yii框架调试心得--在页面输出执行sql语句
Dec 25 PHP
php实现简易聊天室应用代码
Sep 23 PHP
ThinkPHP中html:list标签用法分析
Jan 09 PHP
php实用代码片段整理
Nov 12 PHP
ZendFramework2连接数据库操作实例
Apr 18 PHP
php格式文件打开的四种方法
Feb 24 PHP
php微信开发之关注事件
Jun 14 PHP
ThinkPHP 3使用OSS的方法
Jul 19 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
Symfony2之session与cookie用法小结
2016/03/18 PHP
php 在字符串指定位置插入新字符的简单实现
2016/06/28 PHP
解决PHP Opcache 缓存刷新、代码重载出现无法更新代码的问题
2020/08/24 PHP
小试JQuery的AutoComplete插件
2011/05/04 Javascript
在浏览器窗口上添加遮罩层的方法
2012/11/12 Javascript
jquery使用ajax实现微信自动回复插件
2014/04/28 Javascript
jQuery中wrapInner()方法用法实例
2015/01/16 Javascript
jQuery+HTML5实现图片上传前预览效果
2015/08/20 Javascript
JavaScript、jQuery与Ajax的关系
2016/01/24 Javascript
有关jquery与DOM节点操作方法和属性记录
2016/04/15 Javascript
jquery遍历json对象集合详解
2016/05/18 Javascript
浅谈使用splice函数对数组中的元素进行删除时的注意事项
2016/12/04 Javascript
浅析vue数据绑定
2017/01/17 Javascript
基于Bootstrap分页的实例讲解(必看篇)
2017/07/04 Javascript
jQuery 中msgTips 顶部弹窗效果实现代码
2017/08/14 jQuery
vue2.0之多页面的开发的示例
2018/01/30 Javascript
layer关闭当前窗口页面以及确认取消按钮的方法
2019/09/09 Javascript
Vue实现商品飞入购物车效果(电商项目)
2019/11/26 Javascript
JQuery绑定事件四种实现方法解析
2020/12/02 jQuery
Python实现的将文件每一列写入列表功能示例【测试可用】
2018/03/19 Python
详解python selenium 爬取网易云音乐歌单名
2019/03/28 Python
python实现把二维列表变为一维列表的方法分析
2019/10/08 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
2019/11/29 Python
pycharm 激活码及使用方式的详细教程
2020/05/12 Python
Python常用模块函数代码汇总解析
2020/08/31 Python
阿里健康大药房:阿里自营网上药店
2017/08/01 全球购物
狗狗玩具、零食和咀嚼物的月度送货服务:Super Chewer
2018/08/22 全球购物
十佳班主任事迹材料
2014/01/18 职场文书
ktv中秋节活动方案
2014/01/30 职场文书
网络教育自我鉴定
2014/02/04 职场文书
2014年护士长工作总结
2014/11/11 职场文书
法学专业求职信范文
2015/03/19 职场文书
MySQL 数据类型选择原则
2021/05/27 MySQL
比较几种Redis集群方案
2021/06/21 Redis
python编程简单几行代码实现视频转换Gif示例
2021/10/05 Python
Python OpenCV之常用滤波器使用详解
2022/04/07 Python