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 实例化类的一点摘记
Mar 23 PHP
PHP分页显示制作详细讲解
Nov 19 PHP
openPNE常用方法分享
Nov 29 PHP
phpcms模块开发之swfupload的使用介绍
Apr 28 PHP
php读取富文本的时p标签会出现红线是怎么回事
May 13 PHP
PHP获取当前完整URL地址的函数
Dec 21 PHP
php使用数组填充下拉列表框的方法
Mar 31 PHP
php实现格式化多行文本为Js可用格式
Apr 15 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
Jan 14 PHP
Symfony2联合查询实现方法
Mar 18 PHP
总结PHP如何获取当前主机、域名、网址、路径、端口和参数等
Sep 09 PHP
thinkPHP+LayUI 流加载实现功能
Sep 27 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
第十四节 命名空间 [14]
2006/10/09 PHP
PHP利用REFERER根居访问来地址进行页面跳转
2013/09/28 PHP
mod_php、FastCGI、PHP-FPM等PHP运行方式对比
2015/07/02 PHP
数组任意位置插入元素,删除特定元素的实例
2017/03/02 PHP
基于 Swoole 的微信扫码登录功能实现代码
2018/01/15 PHP
php识别翻转iphone拍摄的颠倒图片
2018/05/17 PHP
浅谈php://filter的妙用
2019/03/05 PHP
Laravel 添加多语言提示信息的方法
2019/09/29 PHP
javascript下数值型比较难点说明
2010/06/07 Javascript
IFrame跨域高度自适应实现代码
2012/08/16 Javascript
JavaScript DOM 编程艺术(第2版)读书笔记(JavaScript的最佳实践)
2013/10/01 Javascript
JS采用绝对定位实现回到顶部效果完整实例
2016/06/20 Javascript
jQuery插件passwordStrength密码强度指标详解
2016/06/24 Javascript
[原创]JS基于FileSaver.js插件实现文件保存功能示例
2016/12/08 Javascript
支持移动端原生js轮播图
2017/02/16 Javascript
vue.js语法及常用指令
2017/10/29 Javascript
微信小程序实现左右联动的实战记录
2018/07/05 Javascript
layui的layedit富文本赋值方法
2019/09/18 Javascript
JS apply用法总结和使用场景实例分析
2020/03/14 Javascript
[10:53]2018DOTA2国际邀请赛寻真——EG
2018/08/11 DOTA
Django中实现点击图片链接强制直接下载的方法
2015/05/14 Python
python实现人脸识别经典算法(一) 特征脸法
2018/03/13 Python
python实现超市扫码仪计费
2018/05/30 Python
OpenCV 轮廓检测的实现方法
2019/07/03 Python
浅谈keras保存模型中的save()和save_weights()区别
2020/05/21 Python
Python 爬虫性能相关总结
2020/08/03 Python
python实现图书馆抢座(自动预约)功能的示例代码
2020/09/29 Python
python 牛顿法实现逻辑回归(Logistic Regression)
2020/10/15 Python
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
2021/01/27 Python
经验丰富大学生村干部自我鉴定
2014/01/22 职场文书
中专自我鉴定
2014/02/05 职场文书
食品业务员岗位职责
2014/03/18 职场文书
主要领导对照检查材料
2014/08/26 职场文书
2015年六一儿童节演讲稿
2015/03/19 职场文书
MySQL表类型 存储引擎 的选择
2021/11/11 MySQL
JavaScript数组 几个常用方法总结
2021/11/11 Javascript