電子メールIDに指定された量の@記号を含めるための規則はありますか。メールIDが有効かどうか、またはPHPを使用していないかどうかを確認する場合は、頭に浮かぶだけです。
6 に答える
引用されている場合、複数@
が許可されます。なぜこの情報が必要なのかを尋ねなければなりません。電子メールアドレスを検証するために正規表現/関数などを記述しようとしないでください。あなたは3つのRFCについて心配する必要があります(そしてあなたがユニコードを考慮に入れたいならおそらく4つ)。そして、あなたは失敗し、それはあなたを怒らせるでしょう。
詳細と、古いバージョンのPHPを使用している場合に使用できる正規表現については、以前の回答を参照してください。
PS
誰かが私の主張を見逃した場合に備えて、自分で電子メールアドレスを「これまで」検証するために、自分自身の検証を考え出そうとしないでください。
最後の1つがドメイン名と「ローカル部分」の間の区切り文字でなければならないことを除いて、(電子メールアドレスのサイズ制限内で)任意の数を指定できます。
@
またはその他の「異常な」文字(RFC 5322で定義されている)がローカル部分に存在する場合は、引用符で囲む必要があります。例:"user@something"@example.com
文字に特別な制限はありません@
。
"very.(),:;<>[]\".VERY.\"very@\\ \"very\".unusual"@strange.example.com
は有効なアドレスです。
この件に関するウィキペディアのページも参照してください。
addr-specは、ローカルで解釈される文字列、アットマーク文字( "@"、ASCII値64)、インターネットドメインを含む特定のインターネット識別子です。ローカルで解釈される文字列は、引用符で囲まれた文字列またはドットアトムのいずれかです。文字列をドットアトムとして表すことができる場合(つまり、テキスト文字またはテキスト文字で囲まれた「。」以外の文字が含まれていない場合)、ドットアトム形式を使用する必要があり、引用符付き文字列形式を使用する必要があります。利用される。コメントと折り畳みの空白は、addr-specの「@」の前後に使用しないでください。
参照: -https: //www.rfc-editor.org/rfc/rfc5322#section-3.4.1
私の本当の質問は、電子メールに2つの@記号を含めることは理にかなっているでしょうか?
それはどのように機能しますか?
で使用filter_var()
しFILTER_VALIDATE_EMAIL
ます。以下は、使用例と出力の例です。
function testemail($email) {
echo "'$email' => ";
var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));
echo "<br />";
}
testemail('');
testemail('myemailsample.com');
testemail('myemail@sample');
testemail('myemail@sample.com');
testemail('myemail@@sample.com');
testemail('myemail@sa@mple.com');
出力、
'' => bool(false)
'myemailsample.com' => bool(false)
'myemail @ sample' => bool(false)
'myemail@sample.com' => string(18) "myemail@sample.com"
'myemail @@ sample.com' => bool(false)
'myemail@sa@mple.com' => bool(false)
有効なメールアドレスを確認するには、filter_var関数を使用する必要があります。文字列を検証し、trueまたはfalseを返します。正規表現について考える必要はありません。