質問:
メールアドレスチェックを作ったのですが、「-(ハイフン)」がエラーになってしまいます。英数字、アンダーバー(_)、ドット(.)、ハイフン(-)以外をエラーにしたいのですが。。。

ハイフンの文字コードは「-」だと思ったのですが、間違いでしょうか。

$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のない保証の正しさ.

  • PCから急に音が出なくなりました。音量調整がグレーに...
  • C言語で、配列をメンバ関数に持つ、構造体配列を関数...
  • さっき、スパイウェアにかかっていたみたいで、インタ...
  • Fedora Coreって今6まで来ていますが、なぜこんなにバ...
  • 携帯用のホームページの書き込みの文末に入る「P701iD...
  • CDを焼くのにどうしても納得できないので質問します。...