To check an email address is valid or not, we always use preg_match. Today I found that php5 has already allow a function to do so, which is filter_var
filter_var($email, FILTER_VALIDATE_EMAIL)
However, most checking script include filter_var doesn't well checking the domain part. For example, an email xxx@xxx.com1 can pass the validation but .com1 is a invalid domain name, so I add some code to the function to imporve the function as below.
function verifyEmail($email) {
if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
return preg_match('/^([a-z]{2,4})$/', end(explode('.',$email)));
}
return false;
}
Note: I have set 2-4 letter in the last part of the domain, but you may know there exists some special domain will not pass the validation (such as .travel, .museum)
filter_var also allow some more checking function, such as FILTER_VALIDATE_URL, FILTER_VALIDATE_IP, you may read detail on php.net