重複の可能性:
PHP でメールアドレスを検証する方法
以下に、有効なメールアドレスをチェックするコードを示します。
if ( (strlen($getemail) >= 7) && (strstr($getemail, "@")) && (strstr($getemail, ".")) ){
しかし、私の質問は、入力した電子メールに上記のすべての機能が含まれていないかどうかを確認できるように、上記のコードの反対は何ですか?
重複の可能性:
PHP でメールアドレスを検証する方法
以下に、有効なメールアドレスをチェックするコードを示します。
if ( (strlen($getemail) >= 7) && (strstr($getemail, "@")) && (strstr($getemail, ".")) ){
しかし、私の質問は、入力した電子メールに上記のすべての機能が含まれていないかどうかを確認できるように、上記のコードの反対は何ですか?
PHP には、これを実行できる関数が既に用意されています。これはfilter_varと呼ばれ、探しているのは の検証フィルターですFILTER_VALIDATE_EMAIL
。
例:
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
// It's a valid email address
} else {
// It's not a valid email address
}
あなたがやろうとしていることは、RegExで達成できるようです。
var_dump(preg_match('#^(\w+){7,}@(\w+)\.([a-z]){2,4}$#i', 'example@example.com')); # 1 (true)
var_dump(preg_match('#^(\w+){7,}@(\w+)\.([a-z]){2,4}$#i', 'foo@example.com')); # 0 (false)
条件の 1 つが満たされない場合 (アドレスが英数字、最小 7 文字、その後に @ が続くことなど) を確認すると、式全体が偽の値になります。
例:
if(preg_match('#^(\w+){7,}@(\w+)\.([a-z]){2,4}$#i', $email))
{
// do stuff
}
そのような電子メールを検証しないでください。組み込みfilter_var
関数を使用してください。電子メールが「本物」であるかどうかを検証する実際の方法はありません。主な問題はドメイン、つまり TLD です。
if (!( (strlen($getemail) >= 7) && (strstr($getemail, "@")) && (strstr($getemail, ".")) )){