- 締切済み
PHPの正規表現eregの使い方
PHP初心者です。 eregを使った入力チェックをしたいのですが、思うように処理できません。 入力は半角英数字のみを受け付け、その他の入力の場合はエラー処理を行いたいと思ってます。 if (!ereg("^[0-9]+$", $user)) { // 半角英数字以外はエラー処理 } 参考のものがあったのでその通りやってみましたが、全角文字も受け付けてしまい困っています。 記号の意味もよくわかりません。 また、これに加え5文字以上8文字以内という条件も付けたいです。 よろしくお願い致します。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- limit004
- ベストアンサー率33% (3/9)
回答No.1
if(!ereg("[0-9a-zA-Z]",$user)){ //エラー処理 } 以上で半角英数字以外となるはずです。 「^」が~以外という意味なので2重否定になります。 そのせいで全角が可能になってるのかもしれません。 また、5文字以上8文字以内の条件はstrlen関数を使用した方がいいと思います。 以下実装バージョン。 if(!ereg("[0-9a-zA-Z]",$user) || strlen($user) > 8 || strlen($user) < 5){ //エラー処理 } せっかくですので私がよく使うサイトも紹介しておきます。
お礼
回答ありがとうございます。 文字数制限はstrlenを使用し対処できましたが、やはりeregのチェックで全角文字も通ってしまいます。
補足
もう一度、試行錯誤しながらやったところ出来ました。 if (ereg("[^0-9a-zA-Z]",$user)) { //エラー処理 } これで出来ました。 でも!eregで否定しているのと意味的に一緒のような気がしますけど。 ありがとうございました。