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 相关文章推荐
杏林同学录(五)
Oct 09 PHP
MYSQL数据库初学者使用指南
Nov 16 PHP
亲密接触PHP之PHP语法学习笔记1
Dec 17 PHP
PHP is_dir() 判断给定文件名是否是一个目录
May 10 PHP
php获取数组长度的方法(有实例)
Oct 27 PHP
使用PHP生成二维码的两种方法(带logo图像)
Mar 14 PHP
destoon公司主页模板风格的添加方法
Jun 20 PHP
将FCKeditor导入PHP+SMARTY的实现方法
Jan 15 PHP
php打印一个边长为N的实心和空心菱型的方法
Mar 02 PHP
PHP连接数据库实现注册页面的增删改查操作
Mar 27 PHP
PHP错误处理函数
Apr 03 PHP
php基于curl实现随机ip地址抓取内容的方法
Oct 11 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
PHP实现的连贯操作、链式操作实例
2014/07/08 PHP
2014年10个最佳的PHP图像操作库
2014/07/14 PHP
php的闭包(Closure)匿名函数初探
2016/02/14 PHP
yii2中结合gridview如何使用modal弹窗实例代码详解
2016/06/12 PHP
javascript 函数式编程
2007/08/16 Javascript
超棒的javascript页面顶部卷动广告效果
2007/12/01 Javascript
JS实现网页表格自动变大缩小的方法
2015/03/09 Javascript
JQuery菜单效果的两个实例讲解(3)
2015/09/17 Javascript
实例详解AngularJS实现无限级联动菜单
2016/01/15 Javascript
AngularJS中的指令全面解析(必看)
2016/05/20 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
webpack4 CSS Tree Shaking的使用
2018/09/03 Javascript
vue2 v-model/v-text 中使用过滤器的方法示例
2019/05/09 Javascript
微信小程序实现蒙版弹出窗功能
2019/09/17 Javascript
layer.alert自定义关闭回调事件的方法
2019/09/27 Javascript
webpack常用构建优化策略小结
2019/11/21 Javascript
python获得两个数组交集、并集、差集的方法
2015/03/27 Python
python迭代器与生成器详解
2016/03/10 Python
Python Xml文件添加字节属性的方法
2018/03/31 Python
python集合比较(交集,并集,差集)方法详解
2018/09/13 Python
python使用pymongo操作mongo的完整步骤
2019/04/13 Python
详解Python3 pandas.merge用法
2019/09/05 Python
pytorch模型预测结果与ndarray互转方式
2020/01/15 Python
Python日志打印里logging.getLogger源码分析详解
2021/01/17 Python
世界领先的26岁以下学生和青少年旅行预订网站:StudentUniverse
2018/07/01 全球购物
拥有超过850家商店的美国在线派对商店:Party City
2018/10/21 全球购物
美国排名第一的葡萄酒俱乐部:Firstleaf Wine Club
2020/01/02 全球购物
编码实现字符串转整型的函数
2012/06/02 面试题
光荣入党自我鉴定
2014/01/22 职场文书
四年级语文教学反思
2014/02/05 职场文书
2014年化验员工作总结
2014/11/18 职场文书
贷款承诺书
2015/01/20 职场文书
公司给客户的感谢信
2015/01/23 职场文书
公司与个人合作协议书
2016/03/19 职场文书
html中显示特殊符号(附带特殊字符对应表)
2021/06/21 HTML / CSS
Nginx如何配置根据路径转发详解
2022/07/23 Servers