メールアドレスチェックを作ったのですが、「-(ハイフン)」がエラーになってしまいます。英数字、アンダーバー(_)、ドット(.)、ハイフン(-)以外をエラーにしたいのですが。。。
ハイフンの文字コードは「-」だと思ったのですが、間違いでしょうか。
$email = mb_convert_kana($email, "KV");
$email = mb_convert_kana($email, "HV");
if( ! ereg( "^[\x40-\x5A|\x61-\x7A|\x30-\x39|\x2d|\x2e|\x5f]+$", $email ) ) {
echo "メールアドレスエラー";
}
すみません、どなたかご指摘いただけないでしょうか。
よろしくお願いします。
答え:
'-' が 0x2dというのはあっています。
問題点は二つあって、
・ブラケットの中で選択を表すのに'|'を使う必要はありません。
・eregの場合、\x2dは'-'と同じ様に解釈される。
このため、|\x2d| という部分が | - | という範囲指定に解釈されています。
\-という表記にするか、閉じブラケットの直前に置けば問題は
解決すると思います。
他は答える:
この質問・回答は役に立ちましたか?
ウェブサイトのユーザーによる情報ポスト、JPQA.comのない保証の正しさ.