php获取路径中后缀名的方法

';

//方法1
$res = pathinfo($url); //以数组或字符串的形式返回关于【文件路径】的信息
echo $res['extension'] . '
'; /* Array( [dirname] => www.test.com/test [basename] => index.php [extension] => php [filename] => index) */ //方法2(推荐) $res = pathinfo($url, PATHINFO_EXTENSION) ; //只获取extension的value值 echo $res . '
'; /* define ('PATHINFO_DIRNAME', 1); define ('PATHINFO_BASENAME', 2); define ('PATHINFO_EXTENSION', 4); @link http://php.net/manual/en/filesystem.constants.php @since 5.2.0 define ('PATHINFO_FILENAME', 8); */ //方法3 $res = explode('.', $url); //将字符串按照.号拆分成数组 echo end($res) . '
'; //获取数组最后一个元素 //方法4 $res = strrchr($url, '.'); //查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符 $res = substr($res, 1); //从第二个位置开始取剩下的所有字符 echo $res . '
'; //方法5 $pos = strrpos($url, '.'); //返回.在字符串中最后一个出现的位置 $res = substr($url, $pos + 1); //从最后一个.号的后一个位置开始取剩下的所有字符 echo $res . '
'; //方法6 preg_match('/.*\.(.*)/', $url, $res); echo $res[1] . '
';

推荐第二种方法的原因如下:
有以下三种特殊情况:

  1. 没有扩展名 。如:/home/www
  2. 没有扩展名,但路径中包含了.字符。如:/home/test.d/test
  3. 有扩展名,但路径中包含了.字符。如:/home/test.d/test.txt

对于其他的方法,不是报错就是获取的不对,不能【完全】兼容这三种特殊情况,只有第二种可以

文章来源:点击,我简单整理了下

你可能感兴趣的:(php获取路径中后缀名的方法)