PHP でメールを検証する
-
PHP で
filter_var()
関数とFILTER_VALIDATE_EMAIL
を使用して電子メールを検証する -
PHP で
FILTER_VALIDATE_EMAIL
、FILTER_SANITIZE_EMAIL
およびfilter_var()
関数を使用して電子メールを検証する -
preg_match()
関数を使用して、正規表現に従って電子メールを検証する
filter_var()
関数と FILTER_VALIDATE_EMAIL
フィルター名 ID を使用して、PHP で電子メールアドレスを検証する方法を紹介します。filter_var()
関数は、最初の引数として電子メールを受け取り、フィルター名 FILTER_VALIDATE_EMAIL
を使用して、RFC 822 の構文に対して電子メールを検証します。このメソッドは、有効な電子メールではなく有効な電子メール形式をチェックします。
また、FILTER_SANITIZE_EMAIL
および FILTER_VALIDATE_EMAIL
フィルター名 ID と fiter_var()
関数を使用して、PHP で電子メールアドレスを検証する別の方法を示します。このメソッドは、最初に電子メールアドレスをサニタイズし、次に電子メールアドレスを検証します。
正規表現を使用して PHP で電子メールを検証する別の方法を紹介します。このメソッドは、preg_match()
関数を使用して、提供された正規表現に従って電子メールが有効かどうかを確認します。
PHP で filter_var()
関数と FILTER_VALIDATE_EMAIL
を使用して電子メールを検証する
filter_var()
関数を使用して、特定のフィルター名で変数をフィルター処理できます。FILTER_VALIDATE_EMAIL
フィルター名は、電子メールを確認する必要があることを指定します。この関数は、最初のパラメーターとして電子メールアドレスを文字列として受け取り、2 番目のパラメーターとして上記で指定されたフィルターID を受け取ります。したがって、提供された電子メールが有効かどうかを確認できます。関数が成功した場合、または false を返した場合、関数はフィルター処理されたデータを返します。電子メールは、電子メールが存在するという意味ではなく、有効であると言われます。フィルタ ID は、RFC 822 の構文に対して電子メールを検証します。有効な電子メールと無効な電子メールを使用して、電子メールの検証をテストできます。
たとえば、パラメータ $email
を受け取る関数 validateEmail()
を作成します。$email
変数で filter_var()
関数を使用し、2 番目のパラメーターとしてフィルターID FILTER_VALIDATE_EMAIL
を指定します。filter_var()
関数に if-else
条件を適用します。if
ブロックに、電子メールが有効であることを示すメッセージを表示し、else
状態で、電子メールが無効であることを表示します。関数の外で、関数を 2 回呼び出します。最初の関数呼び出しで、引数 peter.piper@iana.org
と first.last@example.123
を指定します
2 回目の呼び出しで。
例で提供されている電子メールアドレスは、$_POST
変数を使用してフォームからアクセスされていると想定できます。以下の例の関数は 2 回呼び出されます。最初の呼び出しは有効な電子メールアドレスを渡し、2 番目のアドレスは無効な電子メールを渡します。2 番目のメールアドレスはトップレベルドメインの番号が含まれているため無効です。結果は明らかです。
サンプルコード:
#php 7.x
<?php
function validateEmail($email) {
if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "{$email}: A valid email"."<br>";
}
else {
echo "{$email}: Not a valid email"."<br>";
}
}
validateEmail('peter.piper@iana.org');
validateEmail('first.last@example.123');
?>
出力:
phppeter.piper@iana.org: A valid email
first.last@example.123:Not a valid email
PHP で FILTER_VALIDATE_EMAIL
、FILTER_SANITIZE_EMAIL
および filter_var()
関数を使用して電子メールを検証する
最初のメソッドで追加の FILTER_SANITIZE_EMAIL
フィルター名 ID を使用して、電子メールアドレスからすべての不正な文字を削除できます。フィルタ名 id は、filter_var()
関数の 2 番目の引数であり、電子メールアドレスが最初の引数です。この関数は、サニタイズされた電子メールを返します。再度、この機能を使用して、サニタイズ後に電子メールアドレスの有効性を確認できます。このために、FILTER_VALIDATE_EMAIL
フィルター名 ID を使用して最初の方法に従うことができます。
たとえば、変数 $email
を作成し、不正な文字を含む電子メールアドレスを保存します。メール ram(.mugu)@exa//mple.org
を文字列として変数に保存します。変数で filter_var()
関数を使用し、2 番目のパラメーターとして FILTER_SANITIZE_EMAIL
id を使用します。関数を同じ $email
変数に格納します。次に、最初の方法と同様に、if-else
ステートメントを適用します。今回は、関数のフィルター名として FILTER_VALIDATE_EMAIL
メールを使用します。同様に、メッセージを表示します。
以下の例では、不正な文字を含む電子メールアドレスを取得し、filter_var()
関数がそれらの文字をフィルタリングして、提供された電子メールをサニタイズします。例で提供されている電子メールアドレスには、()
や//
などの不正な文字が含まれています。この関数は、最初にこれらの文字を電子メールから削除してから、電子メールを検証します。
サンプルコード:
#php 7.x
<?php
$email = "ram(.mugu)@exa//mple.org";
$email = filter_var($email, FILTER_SANITIZE_EMAIL);
if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "{$email}: A valid email"."<br>";
}
else{
echo "{$email}:Not a valid email"."<br>";
}
?>
出力:
ram.mugu@example.org: A valid email
preg_match()
関数を使用して、正規表現に従って電子メールを検証する
preg_match()
関数を使用して、PHP の電子メールアドレスを検証できます。このメソッドは、電子メールの検証ルールに正規表現を使用します。自分で正規表現を作成し、有効な電子メールのルールを定義できます。preg_match()
関数は 2つのパラメーターを取ります。最初のパラメーターは正規表現で、2 番目のパラメーターはチェックする電子メールです。三項演算子を使用して、関数とともに電子メールの有効性を確認できます。
たとえば、$email_first
と $email_secon
の 2つの変数を作成し、それらの変数に 2つの電子メールアドレスを格納します。最初に有効なメール firstlast11@gmail.com
を保存し、2 番目に無効なメール firstlast11@gmail.com
を保存します。1つのパラメーターを受け取る関数 validateEmail()
を記述します。パラメータに $email
という名前を付けます。関数内で、サンプルコードのように、$regex
変数に正規表現を記述します。次に、チェックする条件が preg_match()
関数である三項演算子を記述します。$regex
を最初のパラメーターとして、$email
を 2 番目のパラメーターとして使用します。条件が真の場合は電子メールが有効であるというメッセージを、条件が偽の場合は電子メールが無効であるというメッセージを出力します。三項式全体をエコーします。関数の外で、validateEmail()
関数を 2 回呼び出します。最初の関数呼び出しで $email_first
変数を使用し、2 番目の関数呼び出しで $email_second
変数を使用します。
以下の例では、電子メールを検証するためのルールを作成する正規表現を作成しました。有効な電子メールには、受信者名、@
記号、ドメイン、およびトップレベルドメインが含まれています。上記で作成された正規表現は、受信者名を英数字値として受け入れます。アルファベットは大文字と小文字の両方で構成されます。ピリオドも受け付けます。電子メールには@
記号が必要です。ドメインにはアルファベットのみが含まれます。その場合、電子メールにはピリオドが必要です。トップレベルドメインはアルファベットのみで構成され、長さは 2 または 3 である必要があります。正規表現は、このルールに基づいて作成されます。最初の電子メールはすべてのルールを満たしているため有効ですが、2 番目の電子メールは無効です。ドメイン名に番号があり、トップレベルドメインの前にピリオドがないため、無効です。
サンプルコード:
# php 7.x
<?php
$email_first = 'firstlast11@gmail.com';
$email_second ='firstlast@11gmail,com';
function validateEmail($email) {
$regex = "/^([a-zA-Z0-9\.]+@+[a-zA-Z]+(\.)+[a-zA-Z]{2,3})$/";
echo preg_match($regex, $email) ? "The email is valid"."<br>" :"The email is not valid";
}
validateEmail($email_first);
validateEmail($email_second);
?>
出力:
The email is valid
The email is not valid
Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.
LinkedIn