美文网首页
php获取路径中后缀名的方法

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

作者: xiaolin_188 | 来源:发表于2016-11-12 22:29 被阅读0次
<?php
$url = 'www.test.com/test/index.php';
echo 'url: ' . $url . '<br>';

//方法1
$res = pathinfo($url); //以数组或字符串的形式返回关于【文件路径】的信息
echo $res['extension'] . '<br>';
/* 
Array(
    [dirname] => www.test.com/test
    [basename] => index.php
    [extension] => php
    [filename] => index) 
*/

//方法2(推荐)
$res = pathinfo($url, PATHINFO_EXTENSION) ; //只获取extension的value值
echo $res . '<br>';
/*
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) . '<br>'; //获取数组最后一个元素

//方法4
$res = strrchr($url, '.'); //查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符
$res = substr($res, 1); //从第二个位置开始取剩下的所有字符
echo $res . '<br>';

//方法5
$pos = strrpos($url, '.'); //返回.在字符串中最后一个出现的位置
$res = substr($url, $pos + 1); //从最后一个.号的后一个位置开始取剩下的所有字符
echo $res . '<br>';

//方法6
preg_match('/.*\.(.*)/', $url, $res);
echo $res[1] . '<br>';

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

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

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

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

相关文章

网友评论

      本文标题:php获取路径中后缀名的方法

      本文链接:https://www.haomeiwen.com/subject/hqwqpttx.html