中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用PHP自帶方法驗證郵箱是否存在

發布時間:2021-09-02 11:21:16 來源:億速云 閱讀:157 作者:chen 欄目:開發技術

這篇文章主要介紹“利用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是存在的, 但不能說明lastchiliarch這個用戶是存在的。

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

介紹了郵箱驗證,PHP自帶方法如何驗證郵箱、URL、IP是否合法,下面為大家介紹:

主要還是使用的是filter_var函數

語法
filter_var(variable, filter, options)
variable 必需。規定要過濾的變量。
filter 可選。規定要使用的過濾器的 ID。
options 規定包含標志/選項的數組。檢查每個過濾器可能的標志和選項。

PHP Filters

利用PHP自帶方法驗證郵箱是否存在

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));

?>

以上例程會輸出:

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

到此,關于“利用PHP自帶方法驗證郵箱是否存在”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

奇台县| 定边县| 柞水县| 乐安县| 石首市| 咸宁市| 兴化市| 韩城市| 济阳县| 海林市| 哈密市| 赤壁市| 明星| 绥中县| 龙州县| 甘肃省| 青阳县| 金阳县| 永靖县| 泾源县| 华亭县| 会东县| 宾川县| 德阳市| 沁阳市| 延吉市| 霍山县| 博湖县| 吉木萨尔县| 莎车县| 修武县| 珲春市| 航空| 南漳县| 定襄县| 陇西县| 永定县| 台中县| 政和县| 汶川县| 山东|