PHP Check the mailbox address of a lot of more commonly used to write their own regular, but is a lot of trouble, I have the method of PHP with a check.
Filter_var
Filter_var is a built-in variable filtering method in PHP that provides a number of useful filters that can be used to validate integers, floating-point numbers, mailboxes, URLs, MAC addresses, and so on.
Filter_var returns FALSE, indicating that the variable cannot pass through the filter, which is illegal.
$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));
Output:
String (lastchiliarch@163.com)
bool (FALSE)
string (7) 1@a.com
For ASB This illegal mailbox format returned false, but for 1@a.com passed, or slightly flawed ah.
But the general is also through will think 1@a.com is a legitimate mailbox, then what method can more accurate verification?
Checkdnsrr
CHECKDNSRR is actually used to query DNS records for the specified host, which we can use to verify that the mailbox exists.
The MX record is certainly not present for 1@a.com.
$email = "lastchiliarch@163.com";
Var_dump (CHECKDNSRR (Array_pop ("@", $email)), "MX");
$email = "1@a.com";
Var_dump (CHECKDNSRR (Array_pop ("@", $email)), "MX");
Output:
Can see, very perfect, the only drawback is too slow, after all, to do a network request. So it is not appropriate to sync to a large number of mailboxes using this approach to verify.
Filter_var+checkdnsrr
We can engage Filter_var and CHECKDNSRR to do the check, for the vast majority of illegal mailboxes will certainly be in Filter_var when the hang off, the rest of the reuse
CHECKDNSRR further judgment.
$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
}
}
Output:
Note, however, that because only the MX record is checked, only 163.com can be judged to exist, but it cannot be explained that lastchiliarch this user is present.
To more accurately determine the existence of a mailbox, it can only be connected to the SMTP server to authenticate.
Introduced the mailbox verification, PHP's own method how to verify the mailbox, URL, IP is legitimate, the following for you to introduce:
The main use is the Filter_var function .
Grammar
Filter_var (variable, filter, options)
Variable required. Specify the variables to filter.
Filter can be selected. Specify the ID of the filter to use.
The options rule contains an array of flags/options. Check the possible flags and options for each filter.
PHP Filters
Example #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));
? >
The above routines will output:
String "bob@example.com"
bool (FALSE)
The above is the entire content of this article, I hope that you can do PHP email verification help.