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使之能同时支持GIF和JPEG
Oct 09 PHP
php Hex RGB颜色值互换的使用
May 10 PHP
PHP中使用Imagick读取pdf并生成png缩略图实例
Jan 21 PHP
WordPress中用于获取及自定义头像图片的PHP脚本详解
Dec 17 PHP
php 无限级分类 获取顶级分类ID
Mar 13 PHP
php单链表实现代码分享
Jul 04 PHP
PHP获取文本框、密码域、按钮的值实例代码
Apr 19 PHP
PHP模版引擎原理、定义与用法实例
Mar 29 PHP
PHP Trait代码复用类与多继承实现方法详解
Jun 17 PHP
laravel-admin 后台表格筛选设置默认的查询日期方法
Oct 03 PHP
Yii框架模拟组件调用注入示例
Nov 11 PHP
PHP防止sql注入小技巧之sql预处理原理与实现方法分析
Dec 13 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+SqlServer实现分页显示
2006/10/09 PHP
PHP 关于访问控制的和运算符优先级介绍
2013/07/08 PHP
ThinkPHP查询返回简单字段数组的方法
2014/08/25 PHP
php实现有序数组旋转后寻找最小值方法
2018/09/27 PHP
Yii框架学习笔记之应用组件操作示例
2019/11/13 PHP
jtable列中自定义button示例代码
2013/11/21 Javascript
JavaScript数组深拷贝和浅拷贝的两种方法
2014/04/16 Javascript
jquery实现更改表格行顺序示例
2014/04/30 Javascript
JavaScript数据结构与算法之栈详解
2015/03/12 Javascript
jQuery实现的支持IE的html滑动条
2015/03/16 Javascript
jQuery UI插件自定义confirm确认框的方法
2015/03/20 Javascript
JS模拟简易滚动条效果代码(附demo源码)
2016/04/05 Javascript
基于JS实现类似支付宝支付密码输入框
2016/09/02 Javascript
微信小程序实现的日期午别医生排班表功能示例
2019/01/09 Javascript
新手简单了解vue
2019/05/29 Javascript
微信小程序实现手势滑动卡片效果
2019/08/26 Javascript
小程序实现列表展开收起效果
2020/07/29 Javascript
python 从远程服务器下载东西的代码
2013/02/10 Python
零基础写python爬虫之抓取百度贴吧代码分享
2014/11/06 Python
python中urllib模块用法实例详解
2014/11/19 Python
利用Python3分析sitemap.xml并抓取导出全站链接详解
2017/07/04 Python
Python调用C# Com dll组件实战教程
2017/10/12 Python
Python iter()函数用法实例分析
2018/03/17 Python
python实现矩阵打印
2019/03/02 Python
Win10系统下安装labelme及json文件批量转化方法
2019/07/30 Python
django 文件上传功能的相关实例代码(简单易懂)
2020/01/22 Python
Python代码需要缩进吗
2020/07/01 Python
Sneaker Studio罗马尼亚网站:购买运动鞋
2018/11/04 全球购物
大学教师年终总结的自我评价
2013/10/29 职场文书
汽车运用工程专业求职信
2014/06/18 职场文书
文秘自荐信
2014/06/28 职场文书
《给予树》教学反思
2016/03/03 职场文书
一个成功的互联网创业项目,必须满足这些要求
2019/08/23 职场文书
Go语言-为什么返回值为接口类型,却返回结构体
2021/04/24 Golang
关于pytest结合csv模块实现csv格式的数据驱动问题
2022/05/30 Python
Java+swing实现抖音上的表白程序详解
2022/06/25 Java/Android