2011-07-26 5 views
0

私はかなり新しいPHPです。this tutorialに続いて自分のサイトの「メンバーエリア」を設定しています。ページ下部のコードに問題があるようです。無効な文字配列を設定しようとすると構文エラーが発生する

ユーザ名フィールドから無効な文字を選択しようとすると、配列$ junkが設定されます。

$junk = array('.' , ',' , '/' , '\' , '`' , ';' , '[' , ']' , '-', '_', '*', '&', '^', 
'%', '$', '#', '@', '!', '~', '+', '(', ')', '|', '{', '}', '<', '>', '?', ':', '"', '='); 

このコードブロックは私に構文エラーを返します。

私の最初の考えは、「#」または「( 'と')」のいずれかが問題を引き起こしているということでした。なぜなら、htmlとphpでよく使用されているからです。エラーは取り除かれたまま返されました。

私はphpを使い慣れていないので、ほんの少しの小さな構文エラーである可能性があります。どんな入力も素晴らしいでしょう。ありがとう!

編集:これを行う簡単な方法がある場合は、私に教えてください! '\\': '\' 文字の場合

+0

キックアウトしたい文字に応じて、正規表現は簡単になります。 (また、これらの文字をユーザー名から削除する必要があるのはなぜですか?私は非人為的な理由は考えられません)。 – zneak

答えて

0

正規表現を実行する方がはるかに簡単です。 英数字のみを受け入れるようにユーザー名を設定する場合は、

$ user = preg_replace( "/ [^ 0-9a-zA-Z] + /"、 ""、$ user);

本質的には、0-9、a-z、A-Zでないものはすべて ""で置き換えます。あなたが "@"、 "。" (ピリオド)と " - "と "_"の記号:

 
$user = preg_replace("/[^0-9a-zA-Z\@\.\-\_]+/", "", $user); 

正規表現は非常に強力なツールです。それらは、javascriptやPHPを含むほとんどの言語で使用できます。時間をかけて学ぶ価値があります。

1

バックスラッシュをエスケープする必要がありますようにそれを記述する必要があります。 \'は文字通りアポストロフィーを与えます。それは、一重引用符で囲まれた文字列の中に入ることはできません。

0

小さい配列の場合は、文字列を作成し、str_splitを呼び出して文字配列として取得します。それは、彼らが私のキーボード上にある方法ですので、個人的に私は、次の順序

~`[email protected]#$%^&*()-_+={}[]\|;:'",.<>/? 

で文字を使用しているだろう

$junk = str_split('.,/\\`;[]-_*&^%S#@!~+()|{}<>?:"=') 

。しかしそれはちょっとした問題です。私は '(一重引用符)が元の文字列にないことを知っています。

入力を検証するためのより良い方法には、正規表現が関係します。

関連する問題