24

電子メールIDに指定された量の@記号を含めるための規則はありますか。メールIDが有効かどうか、またはPHPを使用していないかどうかを確認する場合は、頭に浮かぶだけです。

4

6 に答える 6

32

引用されている場合、複数@が許可されます。なぜこの情報が必要なのかを尋ねなければなりません。電子メールアドレスを検証するために正規表現/関数などを記述しようとしないでください。あなたは3つのRFCについて心配する必要があります(そしてあなたがユニコードを考慮に入れたいならおそらく4つ)。そして、あなた失敗し、それあなたを怒らせるでしょう。

詳細と、古いバージョンのPHPを使用している場合に使用できる正規表現については、以前の回答を参照してください。

PS

誰かが私の主張を見逃した場合に備えて、自分で電子メールアドレスを「これまで」検証するために、自分自身の検証を考え出そうとしないでください。

于 2012-09-10T16:35:08.820 に答える
19

最後の1つがドメイン名と「ローカル部分」の間の区切り文字でなければならないことを除いて、(電子メールアドレスのサイズ制限内で)任意の数を指定できます。

@またはその他の「異常な」文字(RFC 5322で定義されている)がローカル部分に存在する場合は、引用符で囲む必要があります。例:"user@something"@example.com

于 2012-09-10T16:34:31.683 に答える
14

文字に特別な制限はありません@

"very.(),:;<>[]\".VERY.\"very@\\ \"very\".unusual"@strange.example.comは有効なアドレスです。

この件に関するウィキペディアのページも参照してください。

于 2012-09-10T16:34:39.403 に答える
1

addr-specは、ローカルで解釈される文字列、アットマーク文字( "@"、ASCII値64)、インターネットドメインを含む特定のインターネット識別子です。ローカルで解釈される文字列は、引用符で囲まれた文字列またはドットアトムのいずれかです。文字列をドットアトムとして表すことができる場合(つまり、テキスト文字またはテキスト文字で囲まれた「。」以外の文字が含まれていない場合)、ドットアトム形式を使用する必要があり、引用符付き文字列形式を使用する必要があります。利用される。コメントと折り畳みの空白は、addr-specの「@」の前後に使用しないでください。

参照: -https: //www.rfc-editor.org/rfc/rfc5322#section-3.4.1

于 2012-09-10T16:37:20.247 に答える
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)

于 2012-09-10T16:46:37.507 に答える
0

有効なメールアドレスを確認するには、filter_var関数を使用する必要があります。文字列を検証し、trueまたはfalseを返します。正規表現について考える必要はありません。

于 2012-09-10T16:34:43.513 に答える