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获取网络文件的实现代码
Jan 01 PHP
php使HTML标签自动补全闭合函数代码
Oct 04 PHP
php通过字符串调用函数示例
Mar 02 PHP
Linux下安装oracle客户端并配置php5.3
Oct 12 PHP
为PHP安装imagick时出现Cannot locate header file MagickWand.h错误的解决方法
Nov 03 PHP
PHP的拦截器实例分析
Nov 03 PHP
PHP的openssl加密扩展使用小结(推荐)
Jul 18 PHP
PHP7安装Redis扩展教程【Linux与Windows平台】
Sep 30 PHP
redirect_uri参数错误的解决方法(必看)
Feb 16 PHP
php数组实现根据某个键值将相同键值合并生成新二维数组的方法
Apr 26 PHP
Laravel 读取 config 下的数据方法
Oct 13 PHP
PHP 对接美团大众点评团购券(门票)的开发步骤
Apr 03 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网站在线人数统计
2008/04/09 PHP
php5新改动之短标记启用方法
2008/09/11 PHP
php定义参数数量可变的函数用法实例
2015/03/16 PHP
分享PHP源码批量抓取远程网页图片并保存到本地的实现方法
2015/12/01 PHP
PHP编写的图片验证码类文件分享
2016/06/06 PHP
PHP接口并发测试的方法(推荐)
2016/12/15 PHP
PHP实现无限极分类的两种方式示例【递归和引用方式】
2019/03/25 PHP
Laravel 创建指定表 migrate的例子
2019/10/09 PHP
Jquery Ajax 学习实例2 向页面发出请求 返回JSon格式数据
2010/03/15 Javascript
30个最佳jQuery Lightbox效果插件分享
2011/04/11 Javascript
jquery cookie实现的简单换肤功能适合小网站
2013/08/25 Javascript
JS正则验证邮箱的格式详细介绍
2013/11/19 Javascript
JavaScript获取文本框内选中文本的方法
2015/02/20 Javascript
js实现同一个页面多个渐变效果的方法
2015/04/10 Javascript
JavaScript获得指定对象大小的方法
2015/07/01 Javascript
Angularjs中如何使用filterFilter函数过滤
2016/02/06 Javascript
JS中setTimeout的巧妙用法前端函数节流
2016/03/24 Javascript
Vue.js组件tab实现选项卡切换
2020/03/23 Javascript
深入理解Vue.js源码之事件机制
2017/09/27 Javascript
Angular实现的table表格排序功能完整示例
2017/12/22 Javascript
vue瀑布流组件实现上拉加载更多
2020/03/10 Javascript
解决vue项目router切换太慢问题
2020/07/19 Javascript
浅谈Python处理PDF的方法
2017/11/10 Python
WxPython建立批量录入框窗口
2019/02/27 Python
python批量爬取下载抖音视频
2019/06/17 Python
python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
2020/02/26 Python
Keras—embedding嵌入层的用法详解
2020/06/10 Python
通过代码实例了解Python异常本质
2020/09/16 Python
canvas之万花筒效果的简单实现(推荐)
2016/08/16 HTML / CSS
SheIn俄罗斯:时尚女装网上商店
2017/02/28 全球购物
JSF面试题:如何管量web层中的Bean,用什么标签。如何通过jsp页面与Bean绑定在一起进行处理?
2012/10/05 面试题
编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的
2015/07/23 面试题
信息系统专业个人求职信范文
2013/12/07 职场文书
家庭贫困证明
2015/06/16 职场文书
运动会主持人开幕词
2016/03/04 职场文书
2019年幼儿园管理条例范本!
2019/07/17 职场文书