3

現在、AJAX/JS を使用して、ボタンをクリックしたりページを更新したりせずにフォームを作成しています。私が持っている問い合わせは、電子メールの検証に関するものです。現在、PHP コードは、電子メール アドレスが有効かどうかをチェックします。特定のドメインからのメールのみを受け付けるようにしたいと考えています。からのメールアドレスのみを受け入れるようにphpを介して達成するにはどうすればよいgmailですか?

電子メールの検証のための PHP:

if($_POST) {
    $email = $_POST['email'];
    if (preg_match('|^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$|i', $email)) {
        echo ('<div id="email_input"><span id="resultval">'.$email.'</span></div>');
    }
    else {
        echo ('<div id="email_input"><span id="resultval">Include a valid email address.</span></div>');
    }
}
4

3 に答える 3

5

PHP には、メールアドレスが有効かどうかを確認するのに役立つ簡単な機能があります。

$isValid = filter_var($email, FILTER_VALIDATE_EMAIL);

メール アドレスが gmail アドレスかどうかを確認するには、次のようにします。

list ($user, $domain) = explode('@', $email);
$isGmail = ($domain == 'gmail.com');
于 2012-07-28T21:24:37.027 に答える
4

正規表現には注意してください。実際のすべてのメール アドレスが検証されるわけではありません

メールが有効かどうかを確認する組み込みの PHP 関数があります。

$email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);

これが true を返す場合は、文字列が で終わっているかどうかを確認するだけです@gmail.com。電子メールの検証基準は驚くべきものになる可能性があるため、この関数には奇妙な問題が発生する可能性があることに注意してください。

すべてのメールアドレスを検証する正規表現が本当に必要な場合は、次のとおりです。

(?:[a-z0-9!#$%&'*+/=?^_{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])

于 2012-07-28T21:25:20.790 に答える
2

正規表現をこれに変更する必要があります

'|^[A-Z0-9._%+-]+@gmail\.com$|i'
于 2012-07-28T21:19:30.843 に答える