11

文字列が画像ファイル名かどうかを確認する必要があります。

$aaa = 'abskwlfd.png';

if ($aaa is image file) {
echo 'it's image';
else {
echo 'not image';
}

それ、どうやったら出来るの?100枚の画像をチェックするので、速いはずです。ファイルタイプの検証方法があることは知っていますが、遅いと思います.. preg_match はどうですか? 速いですか?preg_matchが苦手です。

前もって感謝します。

4

7 に答える 7

36

これを試して:

<?php
$supported_image = array(
    'gif',
    'jpg',
    'jpeg',
    'png'
);

$src_file_name = 'abskwlfd.PNG';
$ext = strtolower(pathinfo($src_file_name, PATHINFO_EXTENSION)); // Using strtolower to overcome case sensitive
if (in_array($ext, $supported_image)) {
    echo "it's image";
} else {
    echo 'not image';
}
?>
于 2013-08-07T05:36:24.203 に答える
13

このコードを試して、

if (preg_match('/(\.jpg|\.png|\.bmp)$/i', $aaa)) {
   echo "image";
} else{
   echo "not image";
}
于 2013-08-07T05:46:23.010 に答える
4

多分あなたはこれを探しています:

function isImageFile($file) {
    $info = pathinfo($file);
    return in_array(strtolower($info['extension']), 
                    array("jpg", "jpeg", "gif", "png", "bmp"));
}
  • pathinfo拡張子を含むファイルに関する詳細情報を取得するために使用しています。
  • strtolower大文字と小文字が異なる場合でも、拡張機能がサポートされている画像のリストと一致することを確認するために使用しています
  • in_arrayファイル拡張子が画像拡張子のリストにあるかどうかを確認するために使用します。
于 2013-08-07T05:52:56.427 に答える
2

これを試して

 $allowed = array(
    '.jpg',
    '.jpeg',
    '.gif',
    '.png',
    '.flv'
    );
   if (!in_array(strtolower(strrchr($inage_name, '.')), $allowed)) {
     print_r('error message');
    }else {
       echo "correct image";
    }

またはstrrchr文字列の最後の出現を取ります..そうでなければ他の概念。

$allowed = array(
                'image/jpeg',
                'image/pjpeg',
                'image/png',
                'image/x-png',
                'image/gif',
                'application/x-shockwave-flash'
                        );
        if (!in_array($image_name, $allowed)) {
         print_r('error message');
        }else {
           echo "correct image";
        }

ここでは、STRTOLOWER関数とin_array関数を使用できます。

于 2013-08-07T05:43:16.803 に答える
1

これを試して:

$a=pathinfo("example.exe");

var_dump($a['extension']);//returns exe
于 2013-08-07T05:41:44.440 に答える
0

はい、正規表現は行く方法です。または、 を分割して"."、返された配列の最後の要素を画像拡張子の配列と照合することもできます。私は PHP の専門家ではないので、コードを書くことはできませんが、正規表現を書くことはできます。

^[a-zA-Z\.0-9_-]+\.([iI][mM][gG]|[pP][nN][gG]|etc....)$

これはかなり単純です。正規表現の経験があまりないことはわかっていますが、これが何をするかを次に示します。

^: start of string
[a-zA-Z\.0-9_-]: describes range of characters including all letters, numbers, and ._-
\.: "." character
([iI][mM][gG]|[pP][nN][gG]|etc....): | means or. So just put all image extensions you know here. Again, the brackets for case-insensitivity

任意のシーケンスに一致させたい場合は、括弧内のものと + の代わりに、次を使用します。

.*

「。」は任意の文字に一致し、「*」は任意の量を意味します。したがって、これは基本的に「制限なし」と言っています(改行を除く)

コメントでわかるように、おそらく私が見逃しているものが他にもたくさんあります。それらを読んで、正規表現の参照を見てください。大丈夫です。

于 2013-08-07T05:37:03.120 に答える
0

これを試して

pathinfo()を使用します。

$ext = pathinfo($file_name, PATHINFO_EXTENSION); case sensitive
if (in_array($ext, $supported_image)) {
    echo "it's image";
} else {
    echo 'not image';
}
于 2013-08-07T05:38:12.807 に答える