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

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

4

4 回答 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;
}
于 2013-03-06T21:42:57.337 回答
2

只需使用pathinfo()

$file =  pathinfo('index.php');
echo $file['extension']; // 'php'
于 2013-03-06T21:43:52.370 回答
1
$file = "filename.php.jpg.exe";
echo substr($file, strrpos($file, "."));//.exe
于 2013-03-06T21:52:19.413 回答
1

那行得通,我要改变的一件事是你的回报:

return strtolower(end($parts));

我同意 pathinfo 可能是我改进代码的更好方法。

于 2013-03-06T21:43:03.810 回答