<?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>';
推荐第二种方法的原因如下:
有以下三种特殊情况:
- 没有扩展名 。如:/home/www
- 没有扩展名,但路径中包含了.字符。如:/home/test.d/test
- 有扩展名,但路径中包含了.字符。如:/home/test.d/test.txt
对于其他的方法,不是报错就是获取的不对,不能【完全】兼容这三种特殊情况,只有第二种可以
文章来源:点击,我简单整理了下
网友评论