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和ACCESS写聊天室(五)
Oct 09 PHP
php中可能用来加密字符串的函数[base64_encode、urlencode、sha1]
Jan 16 PHP
php常用Output和ptions/Info函数集介绍
Jun 19 PHP
phpmyadmin中禁止外网使用的方法
Nov 04 PHP
使用PHP和JavaScript判断请求是否来自微信内浏览器
Aug 18 PHP
PHP实现文件上传与下载实例与总结
Mar 13 PHP
php生成txt文件实例代码介绍
Apr 28 PHP
thinkPHP简单遍历数组方法分析
May 16 PHP
利用PHP判断文件是否为图片的方法总结
Jan 06 PHP
PHP中快速生成随机密码的几种方式
Apr 17 PHP
Laravel下生成验证码的类
Nov 15 PHP
yii2 开发api接口时优雅的处理全局异常的方法
May 14 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
smarty 缓存控制前的页面静态化原理
2013/03/15 PHP
php 备份数据库代码(生成word,excel,json,xml,sql)
2013/06/23 PHP
计算php页面运行时间的函数介绍
2013/07/01 PHP
PHP中文乱码解决方案
2015/03/05 PHP
php mysql数据库操作类(实例讲解)
2017/08/06 PHP
php常用字符串查找函数strstr()与strpos()实例分析
2019/06/21 PHP
js 第二代身份证号码的验证机制代码
2011/05/12 Javascript
javascript关于继承的用法汇总
2014/12/20 Javascript
jQuery插件passwordStrength密码强度指标详解
2016/06/24 Javascript
如何利用模板将HTML从JavaScript中抽离
2016/10/08 Javascript
addEventListener()与removeEventListener()解析
2017/04/20 Javascript
基于JavaScript实现报警器提示音效果
2017/10/27 Javascript
微信小程序实现复选框效果
2018/12/28 Javascript
小程序实现投票进度条
2019/11/20 Javascript
微信小程序图片加载失败时替换为默认图片的方法
2019/12/09 Javascript
python 中文乱码问题深入分析
2011/03/13 Python
pyqt4教程之messagebox使用示例分享
2014/03/07 Python
python实现简单的socket server实例
2015/04/29 Python
python基础入门学习笔记(Python环境搭建)
2016/01/13 Python
浅谈python中的数字类型与处理工具
2017/08/02 Python
用python结合jieba和wordcloud实现词云效果
2017/09/05 Python
Python切片工具pillow用法示例
2018/03/30 Python
Python基于更相减损术实现求解最大公约数的方法
2018/04/04 Python
浅谈python之高阶函数和匿名函数
2019/03/21 Python
基于python的Paxos算法实现
2019/07/03 Python
基于python的itchat库实现微信聊天机器人(推荐)
2019/10/29 Python
浅谈python opencv对图像颜色通道进行加减操作溢出
2020/06/03 Python
python + selenium 刷B站播放量的实例代码
2020/06/12 Python
selenium携带cookies模拟登陆CSDN的实现
2021/01/19 Python
canvas 基础之图像处理的使用
2020/04/10 HTML / CSS
家长对孩子评语
2014/01/30 职场文书
《谁的本领大》教后反思
2014/04/25 职场文书
英语通知范文
2015/04/22 职场文书
穆斯林的葬礼读书笔记
2015/06/26 职场文书
公证书
2019/04/17 职场文书
Python基础之元组与文件知识总结
2021/05/19 Python