2012-07-28 52 views
3

我目前正在使用AJAX/JS以使表單沒有按鈕單擊或頁面刷新。我的詢問是關於電子郵件驗證。 PHP代碼現在檢查一個電子郵件地址是否有效。我只想讓它接受來自某個域名的電子郵件。我如何通過php實現只接受gmail的電子郵件地址? ExamplePHP:電子郵件驗證和接受來自某個域名的電子郵件地址

PHP電子郵件的驗證:

if($_POST) { 
    $email = $_POST['email']; 
    if (preg_match('|^[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}$|i', $email)) { 
     echo ('<div id="email_input"><span id="resultval">'.$email.'</span></div>'); 
    } 
    else { 
     echo ('<div id="email_input"><span id="resultval">Include a valid email address.</span></div>'); 
    } 
} 

回答

4

PHP有一個簡單的功能,以幫助您如果電子郵件檢查地址有效:

$isValid = filter_var($email, FILTER_VALIDATE_EMAIL); 

要檢查的電子郵件地址是Gmail地址,下面會做的伎倆:

list ($user, $domain) = explode('@', $email); 
$isGmail = ($domain == 'gmail.com'); 
+0

謝謝你,就像一個魅力。我並不知道「FILTER_VALIDATE_EMAIL」,它非常有用! – CodingWonders90 2012-07-28 21:52:07

+0

我已經使用了此驗證,並將[email protected]視爲有效的郵件地址 – 2013-04-04 09:08:04

4

小心你的正則表達式,it won't validate all actual email addresses

你有一個內置的PHP函數來檢查,如果郵件是有效的:

$email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL); 

如果返回true,那麼你只需要檢查,如果字符串以@gmail.com結束。請注意,此功能可能有some strange issues,因爲電子郵件驗證標準可能令人驚訝。

如果你真的想這驗證所有電子郵件地址的正則表達式,那就是:

(?:[a-z0-9!#$%&'*+/=?^_{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])