PHP获取文件后缀名的三个函数


在PHP中,获取文件后缀名可以通过多种方式实现,但通常不会直接定义为三个特定的函数,因为PHP本身没有直接命名为“获取文件后缀名”的内置函数。不过,我们可以使用几种方法来达到这个目的。以下是三种常见的方法:

### 方法1:使用`pathinfo()`函数

`pathinfo()` 函数返回一个关联数组包含有 path 的信息,包括以下的数组元素(全部为字符串类型):

- `dirname`

- `basename`

- `extension`

- `filename`

其中,`'extension'` 键包含了文件的后缀名。


function getFileExtension1($filename) {
    $info = pathinfo($filename);
    return $info['extension'];
}

// 示例
echo getFileExtension1('example.txt'); // 输出: txt

### 方法2:使用`explode()`和`end()`函数组合

这种方法通过`.`分割文件名,然后取最后一个元素作为文件后缀名。注意,这种方法在处理没有`.`的文件名时可能不会按预期工作。


function getFileExtension2($filename) {
    $parts = explode('.', $filename);
    return end($parts);
}

// 示例
echo getFileExtension2('example.txt'); // 输出: txt

### 方法3:正则表达式

使用正则表达式可以灵活地匹配和提取文件后缀名,特别是当文件名可能包含多个`.`时(例如,`archive.tar.gz`)。


function getFileExtension3($filename) {
    preg_match('/\.([^\.]+)$/', $filename, $matches);
    return isset($matches[1]) ? $matches[1] : '';
}

// 示例
echo getFileExtension3('archive.tar.gz'); // 输出: gz

请注意,这些方法各有优缺点,选择哪种方法取决于你的具体需求和文件名的格式。例如,如果文件名可能包含多个`.`,那么使用`pathinfo()`或正则表达式可能是更好的选择。