我见过很多处理特定文件名扩展名的功能的函数。我,我自己,总是使用我的解决方案:
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
这是最好也是最快的方法吗?
答案 0 :(得分: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;
}
答案 1 :(得分:2)
只需使用pathinfo()
即可$file = pathinfo('index.php');
echo $file['extension']; // 'php'
答案 2 :(得分:1)
这是有效的,我会改变的一件事是你的回报:
return strtolower(end($parts));
我同意pathinfo可能是我改进代码的更好方式。
答案 3 :(得分:1)
$file = "filename.php.jpg.exe";
echo substr($file, strrpos($file, "."));//.exe