ホームページ  >  記事  >  バックエンド開発  >  PHP にはメールアドレスを検証するメソッドが付属しています

PHP にはメールアドレスを検証するメソッドが付属しています

*文
*文オリジナル
2017-12-29 18:04:202267ブラウズ

この記事では主にメールボックスが存在するかどうかを確認するPHP独自の方法と、興味のある友人が参照できるURLとIPかどうかを確認するPHP独自の方法を詳しく紹介します。お役に立てれば幸いです。

PHP でメールアドレスを検証する方法は数多くありますが、正規表現を自分で記述する方法が一般的です。ただし、PHP には独自の検証方法が用意されています。

filter_var

filter_var は、PHP に組み込まれた変数フィルタリング メソッドであり、多くの実用的なフィルターを提供し、整数、浮動小数点数、電子メール アドレス、URL、MAC アドレスなどを検証するために使用できます。

filter_var が false を返す場合、変数がフィルターを通過できないことを意味し、不正であることを意味します。


$email = "lastchiliarch@163.com";
var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));
$email = "asb";
var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));
$email = "1@a.com";
var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));

出力:


string(21) "lastchiliarch@163.com"
bool(false)
string(7) 1@a.com

不正なメール形式 asb の場合は false を返しますが、1@a.com の場合は合格しますが、まだ少し欠陥があります。

ただし、一般的なルールが通過すると、1@a.com は正当なメール アドレスとみなされます。では、それをより正確に確認する方法はあるのでしょうか?

checkdnsrr

checkdnsrr は、指定されたホストの DNS レコードをクエリするために実際に使用され、メールボックスが存在するかどうかを確認するために使用できます。

1@a.com の場合、MX レコードは間違いなく存在しません。


$email = "lastchiliarch@163.com";
  var_dump(checkdnsrr(array_pop(explode("@",$email)),"MX"));
  $email = "1@a.com";
  var_dump(checkdnsrr(array_pop(explode("@",$email)),"MX"));

出力:


  bool(true)
  bool(false)

唯一の欠点は、結局のところ、ネットワークリクエストであるということです。 したがって、この方法を使用して多数のメールボックスを同時に検証するのは適切ではありません。

filter_var+checkdnsrr

filter_var と checkdnsrr を組み合わせて検証できます。filter_var を使用すると、不正なメールボックスの大部分は確実に失敗します。残りは

checkdnsrr を使用してさらに判断できます。


$email_arr = array("lastchiliarch@163.com", "1@a.com");
  foreach($email_arr as $email) {
    if (filter_var($email) === false) {
      echo "invalid email: $email \n";
      continue;
    }
 
    if(checkdnsrr(array_pop(explode("@",$email)),"MX") === false) {
      echo "invalid email: $email \n";
      continue;
    }
  }

出力:


invalid email: 1@a.com

ただし、MXレコードをチェックしているだけなので、163.comが存在すると判断できるだけであり、ユーザーが存在するわけではないことに注意してください。最後のチリアーチが存在します。

メールボックスの存在をより正確に判断したい場合は、SMTP サーバーに接続して確認するしかありません。

メール検証を導入しました。メール、URL、IP が正当であるかどうかを確認する方法を紹介します。

主なことは、filter_var 関数を使用することです。

構文
filter_var(変数、フィルター、オプション)変数は必須です。フィルタリングする変数を指定します。
フィルターはオプションです。使用するフィルターの ID を指定します。
options は、フラグ/オプションを含む配列を指定します。各フィルターで使用可能なフラグとオプションを確認してください。

PHP フィルター

例 #1 A filter_var() example



<?php
var_dump(filter_var(&#39;bob@example.com&#39;, FILTER_VALIDATE_EMAIL));
var_dump(filter_var(&#39;http://example.com&#39;, FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED));
?>

上記のルーチンは出力します:


string(15) "bob@example.com"
bool(false)

関連する推奨事項:

phpチェック番号奇数または偶数のコード

php ファイルまたはディレクトリが存在するかどうかを確認する コードの概要

PHP 正規表現の基本と簡単な例

以上がPHP にはメールアドレスを検証するメソッドが付属していますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。