web-dev-qa-db-ja.com

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

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

アップロードしている画像のファイル拡張子を取得したいのですが、配列を取得するだけです。

$userfile_name = $_FILES['image']['name'];
$userfile_extn = explode(".", strtolower($_FILES['image']['name']));

拡張子そのものを取得する方法はありますか?

414
Keith Power

文字列関数を使う必要はありません。あなたが欲しいもののために実際に設計された何かを使うことができます: pathinfo()

$path = $_FILES['image']['name'];
$ext = pathinfo($path, PATHINFO_EXTENSION);
1097
ThiefMaster

これも同様に動作します。

$array = explode('.', $_FILES['image']['name']);
$extension = end($array);
51
Andrey

より良い方法はstrrpos + substrを使うことです(そのために爆発するよりも速いです):

$userfile_name = $_FILES['image']['name'];
$userfile_extn = substr($userfile_name, strrpos($userfile_name, '.')+1);

しかし、ファイルの種類を確認するには、mime_content_typeを使用するのがより良い方法です: http://www.php.net/manual/en/function.mime-content-type.php

25
Julien

あなたはMIMEタイプのためにこれで試すことができます

$image = getimagesize($_FILES['image']['tmp_name']);

$image['mime']は、MIMEタイプを返します。

この関数はGdライブラリを必要としません。 ここ というドキュメントを見つけることができます。

これは画像のMIMEタイプを返します。

$_FILES["file"]["type"]を使う人もいますが、ブラウザではなくPHPではなく信頼できません。

ThiefMasterが画像拡張子を取得するために提案したようにpathinfo()を使うことができます。

まず、画像を使用して操作を実行する前に、開発中に画像が正常にアップロードされていることを確認してください。

23
Balan

どうですか?

$ext = array_pop($userfile_extn);
11
ilanco