- 締切済み
メールアドレスのチェック
質問させてください。 メールアドレスの正当性チェックを作成してみようと思いました。 (1)"@"より左側の部分は3桁以上16桁以内 (2)使用可能文字は、英小文字,数字,'-', '.', '_' (3)先頭文字は英小文字のみ (4)先頭・末尾文字に'-', '.', '_'は使用不可 (5)数字のみ'_', '.', '-'のみのアドレスはだめ --------------------------------------- $value = "xxxxxx@****.com"; $flg = 0; $address = split("@", $value); //****(1)****// if((strlen($address[0]) > 16) || (strlen($address[0] < 3)){ $flg = 1; } if($flg == 0){ echo("このアドレスはつかます"); }else{ echo("このアドレスはつかえません"); } ------------------------------ と、チェックの(1)しかわからないのですが、 (2) ~ (5)のアドバイスを下さい。 宜しくお願い致します。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- ikspiari
- ベストアンサー率48% (29/60)
Perl 互換の正規表現が使えるハズなのに、思ったとおりに動かない罠。 私は PHP でのメアドチェックは以下のようにしています。 if ( ereg( "^[-._a-z0-9]+@[-.a-z0-9]+\.[a-z]{2,4}$", $email ) ) { echo "$email : OK"; } else { echo "$email : NG"; } 多分もっとスマートで細かいチェックが出来る正規表現があるんでしょうねぇ。
- selenity
- ベストアンサー率41% (324/772)
こんな感じで如何でしょうか? /*----------*/ $addr = $address[0]; if( ereg("^[a-z][0-9a-z._-]{2,15}$", $addr) && !ereg("[_.-]$", $addr) && ereg("[^0-9]", $addr) ){ echo "Pass!!\n"; $flg = 1; } /*----------*/ 「正規表現」というモノを覚えると、こういったもののチェックが楽にできます。
- x-game
- ベストアンサー率42% (80/189)
if (ereg("^[0-9a-z\-\.\_]+$", $address)) ↑ではだめですか? ^は先頭 +は文字列の繰り返し $は最終文字 なので,1文字目から最後の文字まで[]内のチェックをするという意味になります。
- x-game
- ベストアンサー率42% (80/189)
eregを使うとうまくチェックをかけることができます。 下の2つのサイトを使うとできると思いますよ。 http://itb-tech.itboost.co.jp/php/php_06.php http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/php_k09.htm
お礼
返信有難うございます。 なんとか、(2), (3), (4)の作成ができました。 (5)がどうしてもわかりません。 if(ereg("0-9a-z\-\.\_", $address)){ echo("OK"); }else{ echo("NO"); } としてるんですが、 $address = "freaf827398r---/...__adf829"; でもOKになってしまいます。 どこかおかしいですか?