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 相关文章推荐
在线增减.htpasswd内的用户
Oct 09 PHP
php strcmp使用说明
Apr 22 PHP
PHP JSON格式数据交互实例代码详解
Jan 13 PHP
phpMyAdmin自动登录和取消自动登录的配置方法
May 12 PHP
PHP连接sql server 2005环境配置及问题解决
Aug 08 PHP
封装ThinkPHP的一个文件上传方法实例
Oct 31 PHP
ThinkPHP模板Volist标签嵌套循环输出多维数组的方法
Mar 23 PHP
PHP简单实现数字分页功能示例
Aug 24 PHP
PHP简单遍历对象示例
Sep 28 PHP
Yii遍历行下每列数据的方法
Oct 17 PHP
PHP实现时间比较和时间差计算的方法示例
Jul 24 PHP
详解laravel passport OAuth2.0的4种模式
Nov 04 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/09/28 PHP
php模块memcache和memcached区别分析
2011/06/14 PHP
php中选择什么接口(mysql、mysqli)访问mysql
2013/02/06 PHP
解析php时间戳与日期的转换
2013/06/06 PHP
显示程序执行时间php函数代码
2013/08/29 PHP
codeigniter数据库操作函数汇总
2014/06/12 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
2019/02/20 PHP
js利用div背景,做一个竖线的效果。
2008/11/22 Javascript
清空上传控件input file的值
2010/07/03 Javascript
dreamweaver 安装Jquery智能提示
2011/04/02 Javascript
一个JQuery操作Table的代码分享
2012/03/30 Javascript
ext前台接收action传过来的json数据示例
2014/06/17 Javascript
使用console进行性能测试
2015/04/27 Javascript
javascript实现瀑布流加载图片原理
2016/02/02 Javascript
Bootstrap+jfinal实现省市级联下拉菜单
2016/05/30 Javascript
详解nodejs的express如何自动生成项目框架
2017/07/12 NodeJs
Node 升级到最新稳定版的方法分享
2018/05/17 Javascript
小程序使用分包的示例代码
2020/03/23 Javascript
javascript设计模式 ? 装饰模式原理与应用实例分析
2020/04/14 Javascript
Python pass 语句使用示例
2014/03/11 Python
python基础教程之对象和类的实际运用
2014/08/29 Python
Python插件virtualenv搭建虚拟环境
2017/11/20 Python
Python实现的堆排序算法原理与用法实例分析
2017/11/22 Python
对Python 除法负数取商的取整方式详解
2018/12/12 Python
django主动抛出403异常的方法详解
2019/01/04 Python
从列表或字典创建Pandas的DataFrame对象的方法
2019/07/06 Python
自适应线性神经网络Adaline的python实现详解
2019/09/30 Python
Python实现的北京积分落户数据分析示例
2020/03/27 Python
pip install 使用国内镜像的方法示例
2020/04/03 Python
Python虚拟环境的创建和使用详解
2020/09/07 Python
详解Django中的FBV和CBV对比分析
2021/03/01 Python
HTML5+CSS3绘制锯齿状的矩形
2016/03/01 HTML / CSS
Oakley官网:运动太阳镜、雪镜和服装
2016/09/30 全球购物
仓库管理计划书
2014/05/04 职场文书
病人慰问信范文
2015/02/15 职场文书
python flask开发的简单基金查询工具
2021/06/02 Python