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

墨辰丷
リリース: 2023-03-29 10:56:01
オリジナル
2013 人が閲覧しました

この記事では、PHP を使用してファイルのサフィックス名を取得するいくつかの方法をまとめています。これは非常に簡単で実用的です。必要な場合は参考にしてください。たとえば、画像ファイル、jpg や gif などです。

方法は2つあります

まず、$imgが画像ファイル名である場合

$img=12345.gif;
$img_ext = substr($img, strrpos($img, '.'));
ログイン後にコピー

二番目に、php配列を使用し、まずファイル名の文字列を配列に読み込みます

$ext2=explode(".",$img);
      $count=count($ext2);
      $count2=$count-1;
      $file_name  = $urlstr .'.'.$ext2[$count2];//得到后缀并重新定义新的文件名$file_name
ログイン後にコピー

また、他の友達のまとめ 出てきた方法:

第1种方法:
function get_extension($file)
{
substr(strrchr($file, '.'), 1);
}
第2种方法:
function get_extension($file)
{
return substr($file, strrpos($file, '.')+1);
}
第3种方法:
function get_extension($file)
{
return end(explode('.', $file));
}
第4种方法:
function get_extension($file)
{
$info = pathinfo($file);
return $info['extension'];
}
第5种方法:
function get_extension($file)
{
return pathinfo($file, PATHINFO_EXTENSION);
}
ログイン後にコピー

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


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

  3. は明らかです。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 つのフラグ ビットの最小ビットは定数 1 です。



要約: 上記がこの記事の全内容です。皆様の学習に役立つことを願っています。

関連する推奨事項:

現在のファイルの親ディレクトリを取得するための PHP 実装のメソッドの概要


クライアントとサーバーの IP カプセル化クラスを取得するための PHP 実装


WeChat 赤い封筒を実装するためのアルゴリズムPHP で


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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート