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
PHP手机号码归属地查询代码(API接口/mysql)
Sep 04 PHP
PHP中ini_set和ini_get函数的用法小结
Feb 18 PHP
经典PHP加密解密函数Authcode()修复版代码
Apr 05 PHP
PHP内核探索之解释器的执行过程
Dec 22 PHP
在Mac OS上编译安装Nginx+PHP+MariaDB开发环境的教程
Feb 23 PHP
PHP编写daemon process详解及实例代码
Sep 30 PHP
PHP设计模式之模板模式定义与用法详解
Dec 20 PHP
PHP PDOStatement::closeCursor讲解
Jan 30 PHP
PHP convert_uudecode()函数讲解
Feb 14 PHP
Yii 框架控制器创建使用及控制器响应操作示例
Oct 14 PHP
laravel框架中控制器的创建和使用方法分析
Nov 23 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的ob_start();控制您的浏览器cache!
2006/11/25 PHP
洪恩在线成语词典小偷程序php版
2012/04/20 PHP
JavaScript 解析读取XML文档 实例代码
2009/07/07 Javascript
分页栏的web标准实现
2011/11/01 Javascript
javascript轻松实现当鼠标移开时已弹出子菜单自动消失
2013/12/29 Javascript
js立即执行函数: (function ( ){})( ) 与 (function ( ){}( )) 有什么区别?
2015/11/18 Javascript
javascript仿百度输入框提示自动下拉补全
2016/01/07 Javascript
DWR3 访问WEB元素的两种方法实例详解
2017/01/03 Javascript
js仿小米手机上下滑动效果
2017/02/05 Javascript
本地存储localStorage用法详解
2017/07/31 Javascript
vuejs事件中心管理组件间的通信详解
2017/08/09 Javascript
vue-cli 3.0 自定义vue.config.js文件,多页构建的方法
2018/09/19 Javascript
vue项目使用$router.go(-1)返回时刷新原来的界面操作
2020/07/26 Javascript
Python中删除文件的程序代码
2011/03/13 Python
python实现逆波兰计算表达式实例详解
2015/05/06 Python
对命令行模式与python交互模式介绍
2018/05/12 Python
Python FTP两个文件夹间的同步实例代码
2018/05/25 Python
python实现socket+threading处理多连接的方法
2019/07/23 Python
python 异步async库的使用说明
2020/05/04 Python
解决python3输入的坑——input()
2020/12/05 Python
荷兰鞋子在线:Nelson Schoenen
2017/12/25 全球购物
早餐连锁店计划书
2014/01/08 职场文书
商场消防管理制度
2014/01/12 职场文书
人事部经理岗位职责
2014/03/07 职场文书
春节晚会主持词
2014/03/24 职场文书
体育运动会广播稿
2014/10/05 职场文书
校园会短篇的广播稿
2014/10/21 职场文书
学校党的群众路线教育实践活动总结材料
2014/10/30 职场文书
综合测评个人总结
2015/03/03 职场文书
校园音乐节目广播稿
2015/08/19 职场文书
新学期开学寄语2016
2015/12/04 职场文书
python实现Thrift服务端的方法
2021/04/20 Python
Python打包exe时各种异常处理方案总结
2021/05/18 Python
Java字符串逆序方法详情
2022/03/21 Java/Android
USB TYPE-C 或将成为所有智能手机充电标准
2022/04/21 数码科技
蓝牙耳机怎么连接电脑win11? Win11蓝牙耳机连接电脑的技巧
2023/01/09 数码科技