下面我來總結了在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 = "[email protected]";
- 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如何驗證,代碼如下:
- <?
- //PHP驗證郵箱格式的函數
- function valid_email($email) {
- // First, we check that there's one @ symbol, and that the lengths are right
- if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $email)) {
- // Email invalid because wrong number of characters in one section, or wrong number of @ symbols.
- return false;
- }
- // Split it into sections to make life easier
- $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])) { // Check if domain is IP. If not, it should be valid domain name
- $domain_array = explode(".", $email_array[1]);
- if (sizeof($domain_array) < 2) {
- return false; // Not enough parts to domain
- }
- 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)){ //先用正則表達式驗證email格式的有效性
- if(checkdnsrr(array_pop(explode("@",$email)),"MX")){//再用checkdnsrr驗證email的域名部分的有效性
- return true;
- }else{
- return false;
- }
- }else{
- return false;
- }
- }
- ?>
新聞熱點
疑難解答