目录

PHP 从路径中获取文件的扩展名

这是一道妥妥的字符串操作题呀,源于某道面试题,玩一玩,开心就好。

使用 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']);

输出结果:

1
php