搜尋
首頁php教程PHP源码php準確校驗信箱位址是否存在

背景

PHP校驗郵箱地址的方法很多, 比較常用的就是自己寫正則了, 不過正則多麻煩, 我PHP自帶了方法做校驗。

filter_var

filter_var是PHP內建的一個變數過濾的方法, 提供了很多實用的過濾器, 可以用來校驗整數、浮點數、郵箱、URL、MAC位址等。

具體的過濾器參考: filters.validate

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"

string(21) "lastchiliarch@163.com"

string(21) "lastchiliarch@163.com"

string(21) "lastchiliarch@163.com"

bool(alse)"

對於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的時候就掛掉了, 剩下的再用

checkdnsrrsrr。

  

$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

   

但不能注意的是,只是請說明這個用戶是存在的。

想要更精確的判斷郵箱存在, 那隻能連接到smtp伺服器去驗證了。

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器