2012-05-12 12 views
0

カンマで区切られたファイル拡張子のリストを確認するために作成した単純な正規表現について、あなたの意見を述べたいと思います(コンマ文字の前後に1つまたは複数のスペースがあってもかまいません)。preg_matchファイルの拡張子のリスト

この正規表現は、次の値を返す必要があります:

$list = 'jpg,png,gif'; // valid 
$list = 'jpg , png, gif'; // valid 
$list = 'jpg'; // valid 
$list = 'jpg, png, gif'; // valid 
$list = 'jpg png, gif'; // INVALID 
$list = 'jpg png'; // INVALID 

私は、以下の正規表現を使用しています、あなたはそれをどう思いますか?それを最適化したり短縮したりできますか?あなたの良いアドバイス

答えて

1

また、それを少し短くすることができます。

preg_match('#^\w+(\s*,\s*\w+)*$#' , $list) 
+0

ありがとうございます。私は\ sの短縮形を使用します。 \ wは、アンダースコア文字を含むパターンです。これは私が望まないものです。よろしく。 – Vincent

2

ため

if(!preg_match('#^[0-9a-zA-Z]+([ ]*,[ ]*[0-9a-zA-Z]+)*$#' , $list)) 
{ 
    echo 'invalid extension list'; 
} else{ 
    echo 'valid extension list'; 
} 

おかげで、たぶんもっと簡単な方法は、,によって分割され、結果のいずれかがスペース(複数可)を含めるかどうかを確認することです。

function isvalid($var) 
{ 
    return !strpos ($var, ' '); 
} 

$array = explode (',', $list); 
$array_filtered = array_filter ($array, 'isvalid'); 

if ($array == $array_filtered) { 
    echo 'Valid'; 
} 
else { 
    echo 'Invalid'; 
} 

これは、正規表現を使用するよりも速く行う必要があります。

+0

ありがとうございました。私はちょうどいくつかのperformaceテストを行いました、リストに5+の値が含まれていると正規表現がより速く残っているようです。よろしく。 – Vincent

関連する問題