美文网首页
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