0

電子メールをチェックし、データベースに対して実行するためのユーザー検証フォームを作成しようとしています。ただし、「my.name@domain.com」などの電子メールがある場合は、重複したエントリであっても、とにかくデータベースに入れられます。

if (preg_match("/^([a-zA-Z0-9z])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/", $_POST['e-mail'])) {
       //regular expression for email validation
        $Email = $_POST['e-mail'];
    } else {
         $error[] = 'Your EMail Address is invalid  ';
    }

preg_matchを変更して、そこにある期間を検索するにはどうすればよいですか?ところで、サイトに登録するすべてのユーザーは、電子メールにピリオドがあります(同じ電子メール形式を持つ特定のグループの人々のみが対象です)。

4

2 に答える 2

1

最小の目標は、メール アドレスのローカル部分に少なくとも 1 つのピリオドがあることを確認することです。これは、特定のユース ケースで必要になるためです。私たちはおそらく少し素朴で使用することができます

/.*\..*@/

主なチェックとして。これは、0 個以上の任意のもの、1 つのピリオド、0 個以上の任意のもの、アットマークの順に検索します。これにより、重要な場所に少なくとも 1 つのドットがあることが確認されます。文字列をこのチェックにパスさせたくない場合は、 *s をs に変更することを検討してください。ピリオドがどこにあると予想されるのかわかりません。また、ピリオドがローカル部分の最初または最後の文字として許可されているかどうかを頭の中で思い出すことができません。+.@

これを への呼び出しと組み合わせて、アドレスの完全なフォーマットfilter_var($_POST['e-mail'], FILTER_VALIDATE_EMAIL)実際にチェックします。

于 2012-12-12T06:24:44.147 に答える
1

FILTER_VALIDATE_EMAIL代わりにphpフィルターを使用することをお勧めしますreqex

if (filter_var($_POST['e-mail'], FILTER_VALIDATE_EMAIL)) {
    //Valid Email
} else {
    //Invalid Email
}
于 2012-12-12T06:22:26.400 に答える