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

Php 良好、可靠的获取文件扩展名的功能,php,filenames,Php,Filenames,我已经做了一个函数,到目前为止,它似乎非常擅长获取文件扩展名,不管文件名有多奇怪。我在网上遇到的每一种方法似乎都喜欢在网上使用explode。获取扩展名,但如果文件名中有多个.s怎么办 以下是我的功能: $fileName = 'my.reallyAwk-ward..file--name.JPEG' ; echo getExtension($fileName) ; function getExtension($fileName) { $ext = explode('.', strrev

我已经做了一个函数,到目前为止,它似乎非常擅长获取文件扩展名,不管文件名有多奇怪。我在网上遇到的每一种方法似乎都喜欢在网上使用explode。获取扩展名,但如果文件名中有多个.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
?>

我认为这稍微干净一点:

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

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

您也可以这样做

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

它看起来不错;您还可以检查是否有多个扩展,并在这种情况下返回一个数组,尽管这似乎不是您想要的。但是,像
name.php.inc
这样的文件可以算作有两个扩展名。仅供参考,
explode()
end()
也可以执行您想要的操作,但是
pathinfo
可能包含更多有用的信息@AndreiB–rsan不,文件不能有多个扩展名。名为
name.php.inc
的文件扩展名为
.inc
,文件名为
name.php
。我知道pathinfo,但我只想简单一点,只需返回扩展名。只需指定pathinfo_扩展名即可。pathinfo也比Everts和my函数快一点。