ホームページ  >  記事  >  バックエンド開発  >  PHPでファイル拡張子を取得する複数の方法

PHPでファイル拡張子を取得する複数の方法

小云云
小云云オリジナル
2018-03-14 11:08:322399ブラウズ

この記事では主に、PHP でファイル拡張子を取得するさまざまな方法を紹介します。お役に立てれば幸いです。

インターネットから収集されたもので、基本的には次のメソッドです:

最初のメソッド:

function get_extension($file)
{
substr(strrchr($file, '.'), 1);
}

注:

strrchr() 関数は、別の文字列内の文字列の最後の出現を検索し、この位置から文字列の末尾までのすべての文字を返します。文字列。

substr() 関数は文字列の一部を返します。

方法 2:

function get_extension($file)
{
return substr($file, strrpos($file, '.')+1);
}

コメント:

strrpos() 関数は、別の文字列内で最後に出現した文字列を検索します。

substr() 関数は文字列の一部を返します。

3 番目のメソッド:

function get_extension($file)
{
return end(explode('.', $file));
}

注:

explode() 関数は、文字列を配列に分割します。

end() 関数は、配列の内部ポインターを最後の要素に設定し、その要素の値を返します (成功した場合)。

方法 4:

function get_extension($file)
{
$info = pathinfo($file);
return $info['extension'];
}

注:

pathinfo() 関数は、ファイル パス情報を配列の形式で返します。

方法 5:

function get_extension($file)
{
return pathinfo($file, PATHINFO_EXTENSION);
}

注:

pathinfo() 関数は、ファイル パス情報を配列の形式で返します。

上記のメソッドをざっと見たところ、すべて機能しているように見えますが、特にメソッド 1 と 2 は、pathinfo に 2 番目のパラメーターがあることを知らなかった前から使用していました。しかし、よく考えてみると、最初の 4 つの方法にはさまざまな欠点があります。ファイル拡張子を完全に正しく取得するには、次の 3 つの特殊な状況に対処できなければなりません。

ファイル拡張子なし

/home/test.d/test.txt など、パスに文字 . が含まれています

パスには文字 . が含まれていますが、ファイルには拡張子がありません。たとえば、/home/test.d/test

これは明らかです。1 と 2 は 3 番目の状況を処理できず、3 は最初と 3 番目の状況を正しく処理できません。 4 は正しく処理されますが、拡張子が存在しない場合は警告が発行されます。方法 5 のみが最も正しい方法です。ちなみに、 pathinfo メソッドを見てください。公式サイトの紹介文は以下の通りです:

$file_path = pathinfo('/www/htdocs/your_image.jpg');
echo "$file_path ['dirname']\n";
echo "$file_path ['basename']\n";
echo "$file_path ['extension']\n";
echo "$file_path ['filename']\n"; // only in PHP 5.2+

最大 4 つの要素を含む配列を返しますが、常に 4 つあるとは限りません。たとえば、拡張子がない場合、拡張子要素は存在しません。 4 番目のタイプ このメソッドは警告のみを検出します。ただし、phpinfo は 2 番目のパラメータもサポートしています。定数を渡して、返されるデータの特定の部分を指定できます:

PATHINFO_DIRNAME - 目录
PATHINFO_BASENAME - 文件名(含扩展名)
PATHINFO_EXTENSION - 扩展名
PATHINFO_FILENAME - 文件名(不含扩展名,PHP>5.2)

これら 4 つの定数の値は、それぞれ 1、2、4、および 8 です。最初は、複数の定数を指定できると思いました。 OR 演算で指定できます:

pathinfo($file , PATHINFO_EXTENSION | PATHINFO_FILENAME);

後で、これが機能しないことがわかりました。複数の OR 定数のうちの最小のものしか返されません。つまり、4 つのフラグ ビットのうち最小のビットが定数になります。

関連する推奨事項:

PHP を使用してファイル拡張子を決定する方法

ファイル拡張子を取得するための php サンプル コード

ファイル拡張子を取得するための PHP サンプル コードの概要

以上がPHPでファイル拡張子を取得する複数の方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。