2012-04-28 30 views

答えて

985

必要はありません。 pathinfo():あなたは実際にあなたが望むもののために設計されています何かを使用することができ、より良い方法でのstrrposを使用している

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

$ path = $ _FILES ['イメージ'] ['名前'] [0];実際のファイル名は配列内にあります。 pathinfoは文字列のみを評価します。 – foureight84

+8

@ foureight84: 'image []'という名前のフィールドをアップロードしている場合のみです... – ThiefMaster

+2

誰かが関数を使いたい場合に備えて、コードをちょっと修正して関数を作成しました。ここにコードです:function getFileExtension($ path){ $ ext = pathinfo($ path、PATHINFO_EXTENSION); return $ ext; } –

12

どのように文字列関数を使用するには、およそ

$ext = array_pop($userfile_extn); 
+7

:P – Michelle

+2

が、私はこのことをお勧めしません。あなたは今から同じ年である配列の順序に頼っています。これは、将来問題が発生する可能性が最も高い遅延ソリューションです。 –

25

+ 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

+3

'pathinfo私はそうは思わない。 – ThiefMaster

+1

爆発よりも良い;-)。しかし、正しいですが、pathinfoは有効になった方が良い方法です(いくつかの共通サーバはこの機能を無効にします...)。 – Julien

+10

**重要事項**: '/ var/www/website.com/somefile'のようなパスでは失敗します。 – brianreavis

20

あなたはMIMEタイプ

のためにこれを試みることができます

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

この機能はGDライブラリを必要としません。文書hereがあります。

これはイメージのMIMEタイプを返します。

一部の人々は$_FILES["file"]["type"]を使用していますが、ブラウザではなくPHPによって信頼できるものではありません。

pathinfo()をThiefMasterとして使用すると、画像の拡張子を取得できます。

最初に、画像の操作中に画像が正常にアップロードされていることを確認してから、画像を操作してください。

45

これは、同様に動作します:

かわいい機能です
$array = explode('.', $_FILES['image']['name']); 
$extension = end($array); 
+17

'参照のみで変数を渡す'、PHPマニュアル – dader

+1

'end'関数は配列の内部ポインタを配列の最後に移動して返すことを意図しているので、これは良いアプローチではありませんその要素。問題は、配列が参照渡しされ、配列が動的に生成されているため、PHPのバージョンによっては、参照渡しできないため、警告または失敗です。 – SteveK

+25

**重要な注意**:これは '/ var/www/website.com/somefile'のようなパスでは失敗します(pathinfoを使う方が良い)。 – brianreavis

関連する問題