この記事では主にメールボックスが存在するかどうかを確認する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('bob@example.com', FILTER_VALIDATE_EMAIL)); var_dump(filter_var('http://example.com', FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED)); ?>
string(15) "bob@example.com" bool(false)
関連する推奨事項:
php ファイルまたはディレクトリが存在するかどうかを確認する コードの概要
以上がPHP にはメールアドレスを検証するメソッドが付属していますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。