首頁  >  文章  >  後端開發  >  php 驗證email的準確性實例代碼

php 驗證email的準確性實例代碼

怪我咯
怪我咯原創
2017-07-16 09:48:382003瀏覽

E-mail象普通的郵件—樣,也需要地址,它與普通郵件的區別在於它是電子地址。所有在Internet之上有信箱的使用者都有自己的一個或幾個Email address,而這些Email address都是唯一的。郵件伺服器就是根據這些位址,將每封電子郵件傳送到各個使用者的信箱中,Email address就是使用者的信箱位址。就像普通郵件一樣,你能否收到你的E-mail,取決於你是否取得了正確的電子郵件地址。 —個完整的Internet郵件地址由以下兩個部分組成,格式如下:登入名稱@主機名稱.網域  中間用—個表示「在」(at)的符號「@」分開,符號的左邊是對方的登入名,右邊是完整的主機名,它由主機名稱與網域組成。其中,網域由幾個部分組成,每一部分稱為一個子網域(Subdomain),各子網域之間以圓點「.」隔開,每個子網域都會告訴使用者一些有關這台郵件伺服器的資訊。

這篇文章主要介紹在PHP中怎麼檢查email的準確性

實例代碼

<?php 
if (eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]$",$email)) { 
echo "您的 E-Mail 通过初步检查"; 
} 
?>

在這句話裡,首先是應用了一個eregi函數,這個函數還算好理解。隨便找本書,就能給你一段解釋: 
語法: int ereg(string pattern, string string, array [regs]); 
傳回值: 整數/陣列 
本函數以pattern 的規則來解析比對字串 string。
比對結果回傳的值放在陣列參數regs 之中,regs[0] 內容就是原始字串string、regs[1] 為第一個合乎規則的字串、regs[2] 就是第二個合乎規則的字串,餘類推。若省略參數 regs,則只是單純地比對,找到則傳回值為 true。

而不太好理解的就是前面的這段正規表示式了:^[_.0-9a-z-]+@([0-9a- z][0-9a-z-]+.)+[a-z]$ 
在這段正規表示式中,"+"表示前面的字串連續出現一個或多個;"^"表示下一個字串必須出現在開頭,"$"表示前一個字串必須出現在結尾; 
"."也就是".",這裡""是轉義符號;""表示前面的字串可以連續出現2-3次。 "()"表示包含的內容必須同時出現在目標物件中。 "[_.0-9a-z-]"表示包含在"_"、"."、"-"、從a到z範圍內的字母、從0到9範圍內的數字中的任意字元; 
這樣一來,這個正規表示式可以這樣翻譯: 
"下面的字元必須在開頭(^)"、"該字元必須包含在"_"、"."、"-"、從a到z範圍內的字母、從0到9範圍內的數字中([_.0-9a-z-])"、"前面這個字元至少出現一次(+)"、@、"該字串由一個包含在從a到z範圍內的一個字母、從0到9範圍內的數字中的字元開頭,後面跟著至少一個包含在"-"、從a到z範圍內任何一個字母、從0到9範圍內任何一個數字中的字符,最後以.結束(([0-9a-z][0-9a-z-]+.))"、"前面這個字符至少出現一次(+)"、"從a到z範圍內的字母出現2-3次,並以它結束([a-z]$)" 
很繁雜是吧,對了,正因為這樣,人們才使用正規表示式。 

以上是php 驗證email的準確性實例代碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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