PHP驗證郵箱與郵箱有效性驗證
來源:程序員人生 發布時間:2014-05-27 05:51:34 閱讀次數:3353次
下面我來總結了在php郵箱驗證的正則表達式以及還可以checkdnsrr函數來驗證你輸入的郵箱是否是有效的哦,這樣可以更好的過濾到無效郵箱地址哦。
域名由各國文字的特定字符集、英文字母、數字及“-”(即連字符或減號)任意組合而成, 但開頭及結尾均不能含有“-”,“-”不能連續出現 。 域名中字母不分大小寫。域名最長可達60個字節(包括后綴.com、.net、.org等)。
/^[a-z]([a-z0-9]*[-_]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[.][a-z]{2,3}([.][a-z]{2})?$/i;/內容/i 構成一個不區分大小寫的正則表達式
代碼如下:
- $email = "tanklo_--vehy@yahoo.com.cn";
- function check_email($email) {
- $pattern_test = "/([a-z0-9]*[-_.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[.][a-z]{2,3}([.][a-z]{2})?/i";
- return preg_match($pattern_test,$email);
- }
- echo check_email($email);
上面的只能簡單的驗證郵件格式,下面一個更具體驗證方法,PHP如何驗證,代碼如下:
- <?
-
- function valid_email($email) {
-
- if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $email)) {
-
- return false;
- }
-
- $email_array = explode("@", $email);
- $local_array = explode(".", $email_array[0]);
- for ($i = 0; $i < sizeof($local_array); $i++) {
- if (!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~.-]{0,63})|("[^(|")]{0,62}"))$", $local_array[$i])) {
- return false;
- }
- }
- if (!ereg("^[?[0-9.]+]?$", $email_array[1])) {
- $domain_array = explode(".", $email_array[1]);
- if (sizeof($domain_array) < 2) {
- return false;
- }
- for ($i = 0; $i < sizeof($domain_array); $i++) {
- if (!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$", $domain_array[$i])) {
- return false;
- }
- }
- }
- return true;
- }
-
-
- if(!valid_email($myeml)){
- echo"<script>alert('Please enter a valid e-mail address');location.href='javascript:history.back()'</script>";
- break;
- }
- ?>
無意中就發現checkdnsrr函數那里就有了更精妙的例子,分享給大家,代碼如下:
- <?php
- function validate_email($email){
- $exp = "^[a-z'0-9]+([._-][a-z'0-9]+)*@([a-z0-9]+([._-][a-z0-9]+))+$";
- if(eregi($exp,$email)){
- if(checkdnsrr(array_pop(explode("@",$email)),"MX")){
- return true;
- }else{
- return false;
- }
- }else{
- return false;
- }
- }
- ?>
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈