2011-09-14 10 views
0

検索機能を作成しています。ユーザーはa-z A-Zと0-9のみを使用できます。 $ varには特殊文字ではなく、テキストや数字だけが含まれているかどうかを確認するにはどうすればよいですか?変数にテキストまたは数字が含まれていないか確認してください。

私はこのような何か試してみました:誰もが賢く解決策を持っている場合は、私に知らせてください

if (!preg_match('/[^a-z]/i', $search) { 
$error = "error..."; 
} 

を。また、特殊文字をチェックすることもできます。

+0

はOK見える - なぜ '/ [^ A-ZA-Z0-9] /'、しかし? –

+0

スペースを空けていませんか? –

+0

スペースは許されるべきです – 2by

答えて

2

あなたはかなりあります。

if(preg_match('/[^a-z0-9]/i', $search)) 
{ 
    $error = "Error..."; 
} 

/iフラグはそうA-Zは、文字リスト内で必要とされていない、大文字小文字を無視する式を告げる:ちょうどこのように、あなたの正規表現に0から9の数字を追加します。またpreg_match()がないマッチしたものを持っていたかどうかをチェックしながら、元のコードで

は、あなたは、文字や数字ではなかったものを探していた - あなたは二重否定を作成しました。上記のコードでは、の文字でない場合、である場合、if()を実行します。コメントの@brainへのフルクレジット単に中括弧内の文字に追加し、他の文字を許可する


if(preg_match('/[^a-z0-9 \.]/i', $search)) 
{ 
    $error = "Error..."; 
} 

この例では、スペースと.(ドット)が可能。

+0

この問題は、文字列に不正な文字が含まれている場合、preg_matchが> 0を返してくれることになります。だから "!"を取り除く。また、もう一つ ")"が必要です。 :-) – brain

+0

ええと、それは私が何を検索しても毎回$エラーを与える – 2by

+0

ああ大丈夫、それは今動作します。私が選択したいくつかの特殊文字を追加したいのですが、どうすればいいですか? – 2by

2

このような何か:

if(!preg_match('/^[a-zA-Z0-9]+$/', $search)) { 
    // error 
} 
+0

+ $は何をしますか? – 2by

+0

[..] +は、良い文字が少なくとも1回存在しなければならないことを意味します。 ^と$は、それが行全体に一致することを意味し、行内のどこにも一致しません。基本的に。 – brain

関連する問題