使用PHP获取文件扩展名的最短方法

3

我曾经看过很多处理特定文件名扩展名检索的函数。而我自己则总是使用以下这种解决方案:

function extension( $filename = __FILE__ ) {
    $parts = explode('.', $filename);
    return (strtolower($parts[(sizeof($parts) - 1)]));
}

echo extension();              // php
echo extension('.htaccess');   // htaccess
echo extension('htaccess');    // htaccess
echo extension('index.php');   // php

这是最好和最快的方法吗?

5
pathinfo() http://www.php.net/manual/en/function.pathinfo.php with PATHINFO_EXTENSION:pathinfo() 是 PHP 语言中的一个函数,可用于从文件路径中获取各种信息。使用 PATHINFO_EXTENSION 参数可以从文件路径中仅获取文件扩展名部分。 - Mark Baker
可能是如何在PHP中提取文件扩展名?的重复问题。 - John Conde
4个回答

4
我想说这不是最好的方法,我怀疑它也不是最快的。规范的方法是使用pathinfo
$ext = pathinfo($file, PATHINFO_EXTENSION);

使用 explode 的问题在于它会创建一个数组,这必然会占用更多的内存(即使数量微不足道),这几乎总是导致速度降低。如果你真的想使用自制的非规范方式,我建议使用 strrpos
function get_extension($file)
{
    $pos = strrpos($file, '.');
    // for condition when strrpos returns FALSE on failure.
    if($pos !== FALSE) return substr($file, $pos);
    return FALSE;
}

2

只需使用pathinfo()函数即可。

$file =  pathinfo('index.php');
echo $file['extension']; // 'php'

1
$file = "filename.php.jpg.exe";
echo substr($file, strrpos($file, "."));//.exe

substr($file, strrpos($file, ".")+1); 用于去除点号。 - user1646111
我的函数难度不是有点低吗... :) - user1386320
为你加油,为你的努力加油! :) - user1386320

1

可以,但我会建议你修改一下返回值:

return strtolower(end($parts));

我同意pathinfo可能是更好的方式,我只是在改进你的代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接