这是一道妥妥的字符串操作题呀,源于某道面试题,玩一玩,开心就好。
使用 pathinfo 函数
1
2
3
4
5
6
7
8
9
10
11
12
13
| <?php
/**
* 从路径中获取文件的扩展名。
*
* @param string $path
*
* @return string
*/
function ext_name(string $path): string
{
return pathinfo($path, PATHINFO_EXTENSION);
}
|
或者
1
2
3
4
5
6
7
8
9
10
11
12
13
| <?php
/**
* 从路径中获取文件的扩展名。
*
* @param string $path
*
* @return string
*/
function ext_name(string $path): string
{
return pathinfo($path)['extension'];
}
|
使用 preg_split 函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| <?php
/**
* 从路径中获取文件的扩展名。
*
* @param string $path
*
* @return string
*/
function ext_name(string $path): string
{
$array = preg_split('/[\\.]/', $path);
return $array[count($array) - 1];
}
|
使用 end 函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| <?php
/**
* 从路径中获取文件的扩展名。
*
* @param string $path
*
* @return string
*/
function ext_name(string $path): string
{
$array = explode('.', $path);
return end($array);
}
|
使用 strrchr 函数
1
2
3
4
5
6
7
8
9
10
11
12
13
| <?php
/**
* 从路径中获取文件的扩展名。
*
* @param string $path
*
* @return string
*/
function ext_name(string $path): string
{
return substr(strrchr($path, '.'), 1);
}
|
使用 strrpos 函数
1
2
3
4
5
6
7
8
9
10
11
12
13
| <?php
/**
* 从路径中获取文件的扩展名。
*
* @param string $path
*
* @return string
*/
function ext_name(string $path): string
{
return substr($path, strrpos($path, '.') + 1);
}
|
使用 preg_replace 函数
1
2
3
4
5
6
7
8
9
10
11
12
13
| <?php
/**
* 从路径中获取文件的扩展名。
*
* @param string $path
*
* @return string
*/
function ext_name(string $path): string
{
return preg_replace('/^.*\.([^.]+)$/D', "$1", $path);
}
|
使用 SplFileInfo 类
1
2
3
4
5
6
7
8
9
10
11
12
13
| <?php
/**
* 从路径中获取文件的扩展名。
*
* @param string $path
*
* @return string
*/
function ext_name(string $path): string
{
return (new \SplFileInfo($path))->getExtension();
}
|
函数调用:
1
2
3
| <?php
echo ext_name($_SERVER['PHP_SELF']);
|
输出结果: