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

それはうまくいきます、私が変更することの1つはあなたのリターンです:

return strtolower(end($parts));

pathinfo は、おそらくコードを改善するためのより良い方法であることに同意します。

于 2013-03-06T21:43:03.810 に答える