web-dev-qa-db-ja.com

変数のようなファイル名から拡張子を取得する

重複の可能性:
PHPでファイル拡張子を抽出する方法は?

私は変数を持っています$filename="filename.ext"または$filename="filena.m.e.ext"など。変数/文字列から拡張子(ここではext)を抽出するにはどうすればよいですか?変数が変化するか、1つ以上のドットが含まれる場合があります。その場合、最後のドットの後の部分を取得します。

21

answer を参照してください:

$ext = pathinfo($filename, PATHINFO_EXTENSION);
58
Haim Evgi

次のような関数を定義できます。

function get_file_extension($filename)
{
    /*
     * "." for extension should be available and not be the first character
     * so position should not be false or 0.
     */
    $lastDotPos = strrpos($fileName, '.');
    if ( !$lastDotPos ) return false;
    return substr($fileName, $lastDotPos+1);
}

または、PHPに組み込まれた Spl_FileInfo オブジェクトを使用できます

4
farzad

パス情報の問い合わせを使用できます。

$info = pathinfo($file);

どこ

$info['extension']

拡張子が含まれています

4
BugFinder

正規表現を使用したい:

preg_match('/\.([^\.]+)$/', $filename);

あなたはそれをテストすることができます ここ それがあなたの入力を与えられてあなたが望む結果を得るかどうか見るために。

3
kinakuta

これを行うには多くの方法があります。つまり、explode()やpreg_matchなどを使用します。

しかし、私がこれを行う方法は pathinfoを使用

$path_info = pathinfo($filename);

echo $path_info['extension'], "\n";
2
stefgosselin

。を使用して文字列を展開し、最後の配列項目を取得できます。

$filename = "file.m.e.ext";
$filenameitems = explode(".", $filename);

echo $filenameitems[count($filenameitems) - 1]; // .ext
// or echo $filenameitem[-1];
0