PHP获取文件扩展名的N种方法。

  第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有第二个参数之前也一直在用。但是仔细考虑一下,前四种方法都有各种各样的毛病。要想完全正确获取文件的扩展名,必须要能处理以下三种特殊情况。

  没有文件扩展名

  路径中包含了字符。,如/home/test.d/test.txt

  路径中包含了字符。,但文件没有扩展名。如/home/test.d/test

  很明显:1、2不能处理第三种情况,3不能正确处理第一三种情况。4可以正确处理,但是在不存在扩展名时,会发出一个警告。只有第5种方法才是最正确的方法。顺便看一下pathinfo方法。官网上介绍如下:

  $file_path = pathinfo;

  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还支持第二个参数。可以传递一个常量,指定返回某一部分的数据 www.yztrans.com

  PATHINFO_DIRNAME - 目录

  PATHINFO_BASENAME - 文件名(含扩展名)

  PATHINFO_EXTENSION - 扩展名

  PATHINFO_FILENAME - 文件名(不含扩展名,PHP>5.2)

  这四个常量的值分别是1、2、4、8,刚开始我还以为可以通过或运算指定多个:

  pathinfo($file, PATHINFO_EXTENSION | PATHINFO_FILENAME) www.lefeng123.com

  后来发现这样不行,这只会返回几个进行或运算常量中最小的那个。也就是四个标志位中最小位为1的常量。

  以下是一些补充方法

  一,php explode函数

  $pic = 'abc.php';

  $pics = explode('.' , $pic);

  echo $num = count($pics);

  echo '<br>'.$pics[$num-1];

  这样就可以输出

  .php了。

  下面利用foreach

  foreach ($pics as $value) //2

  {

  $a = $value;

  }

  echo $a.'<br>';

  来有一个比较好的函数end我推荐使用此函数快捷 end函数用法

  echo end($pics);

  echo '<br>';

  其它的访方法可以在文件上传时判断,不过那需要文件上传不上传我们不能使用$_FILES来操作。

PHP获取文件扩展名的多种方法的更多相关文章

  1. python获取文件扩展名的方法(转)

    主要介绍了python获取文件扩展名的方法,涉及Python针对文件路径的相关操作技巧.具体实现方法如下: 1 2 3 4 import os.path def file_extension(path ...

  2. python获取文件扩展名的方法

    主要介绍了python获取文件扩展名的方法,涉及Python针对文件路径的相关操作技巧 import os.path def file_extension(path): ] print file_ex ...

  3. PHP中获取文件扩展名的N种方法

    PHP中获取文件扩展名的N种方法 从网上收罗的,基本上就以下这几种方式: 第1种方法:function get_extension($file){substr(strrchr($file, '.'), ...

  4. PHP获取文件扩展名五种以上的方法和注释

    在PHP面试中或者考试中会有很大几率碰到写出五种获取文件扩展名的方法,下面是我自己总结的一些方法 $file = ‘需要进行获取扩展名的文件.php’; //第一种,根据.拆分,获取最后一个元素的值f ...

  5. PHP中获取文件扩展名

    function get_extension($file) { return substr(strrchr($file, '.'), 1) ; } function get_extension($fi ...

  6. PHP获取文件扩展名的五种方式

    这是我应聘实习时遇到的一道笔试题: 使用五种以上方式获取一个文件的扩展名. 要求:dir/upload.image.jpg,找出 .jpg 或者 jpg , 必须使用PHP自带的处理函数进行处理,方法 ...

  7. PHP 获取文件扩展名的五种方式

    第一种 substr(strrchr("http://www.xxx.com/public/abc.jpg", '.'), 1); string strrchr('string', ...

  8. php获取文件扩展名

    <?php $path = 'http://www.wstmart.net/doc.html'; $ext = getExt($path); echo $ext; // 方法1 function ...

  9. PHP获取文件扩展名的常用方法小结【五种方式】

    方法1:   function getExt1($filename) {    $arr = explode('.',$filename);    return array_pop($arr);; } ...

随机推荐

  1. Linux&shell之处理用户输入

    写在前面:案例.常用.归类.解释说明.(By Jim) 命令行参数$1为第一个参数,$2为第二个参数,依次类推...示例: #!/bin/bash # using one command line p ...

  2. -_-#【Angular】自定义指令directive

    AngularJS学习笔记 <!DOCTYPE html> <html ng-app="Demo"> <head> <meta chars ...

  3. 【转】深层次探讨mutex与semaphore之间的区别(下)

    原文网址:http://blog.chinaunix.net/uid-23769728-id-3173282.html 这篇博文很长,虽然这是下篇,但还没结束,benchmark方面的东西正在进行中, ...

  4. LU分解(1)

    1/6 LU 分解          LU 分解可以写成A = LU,这里的L代表下三角矩阵,U代表上三角矩阵.对应的matlab代码如下: function[L, U] =zlu(A) % ZLU ...

  5. 【翻译】Organizing ASP.NET MVC solutions 如何组织你的ASP.NET MVC解决方案

    序言 时隔一年,弦哥重出江湖,对于我们学习.NET MVC那将有大大的好处,期待弦哥的重构系列.在弦哥与jerrychou的交流中提到了一篇文章http://lostechies.com/jimmyb ...

  6. HDOJ(HDU) 2088 Box of Bricks(平均值)

    Problem Description Little Bob likes playing with his box of bricks. He puts the bricks one upon ano ...

  7. Swift开发语法

    Swift开发入门 简介 Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序 2014 年,在 Apple WWDC 发布 历史 2010 年 7 月,苹果开发者 ...

  8. PHP安全编程:register_globals的安全性 全局变量注册(转)

    如果你还能记起早期Web应用开发中使用C开发CGI程序的话,一定会对繁琐的表单处理深有体会.当PHP的register_globals配置选项打开时,复杂的原始表单处理不复存在,公用变量会自动建立.它 ...

  9. 【转载】python:特殊函数使用方式

    [转载]廖雪峰的官方网站 可变参数 在Python函数中,还可以定义可变参数.顾名思义,可变参数就是传入的参数个数是可变的. 我们以数学题为例子,给定一组数字a,b,c……,请计算a2 + b2 + ...

  10. NYOJ 214 最长上升子序列nlogn

    普通的思路是O(n2)的复杂度,这个题的数据量太大,超时,这时候就得用nlogn的复杂度的算法来做,这个算法的主要思想是只保存有效的序列,即最大递增子序列,然后最后得到数组的长度就是最大子序列.比如序 ...