良好、可靠的文件扩展名获取功能


Good, reliable function to get file extension

我做了一个函数,到目前为止,无论文件名有多奇怪,它似乎都非常擅长获取文件扩展名。我在网上遇到的每一个方法似乎都喜欢在上使用爆炸。获取扩展名,但是如果文件名中有多个.s呢?

这是我的功能:

$fileName = 'my.reallyAwk-ward..file--name.JPEG' ;
echo getExtension($fileName) ;
function getExtension($fileName)
{
    $ext = explode('.', strrev($fileName), 2) ;
    $ext = strtolower(strrev($ext[0])) ;
    return $ext ;
}

我是在重新发明一个轮子,还是可以提高效率?

<?php
$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');
echo $path_parts['dirname'], "'n";
echo $path_parts['basename'], "'n";
echo $path_parts['extension'], "'n";
echo $path_parts['filename'], "'n"; // since PHP 5.2.0
?>

发件人http://php.net/manual/en/function.pathinfo.php

我认为这稍微干净一点:

$filename = 'myfile.jpg';
$extension = substr($filename, strrpos($filename,'.') +1 )

分解会创建一个新的数组,通常还有更多的"工作"。

您也可以这样做。

echo substr(strrchr('file.txt','.'),1);