Validating e-mail addresses in PHP
Posted: November 17th, 2011 | Tags: PHP • Tutorials | Posted in: PHP, Tutorials
Note: This tutorial was originally published in 2011. The tips and techniques explained may be outdated.
This is easily the best function I’ve used for validating e-mail addresses in my PHP scripts and applications.
function is_valid_email($email) { $qtext = '[^\x0d\x22\x5c\x80-\xff]'; $dtext = '[^\x0d\x5b-\x5d\x80-\xff]'; $atom = '[^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+'; $quoted_pair = '\x5c[\x00-\x7f]'; $domain_literal = "\x5b($dtext|$quoted_pair)*\x5d"; $quoted_string = "\x22($qtext|$quoted_pair)*\x22"; $domain_ref = $atom; $sub_domain = "($domain_ref|$domain_literal)"; $word = "($atom|$quoted_string)"; $domain = "$sub_domain(\x2e$sub_domain)*"; $local_part = "$word(\x2e$word)*"; $addr_spec = "$local_part\x40$domain"; return preg_match("!^$addr_spec$!", $email) ? true : false; }
Use it as follows:
if((isset($_POST['email']) && !empty($_POST['email'])) { if(is_valid_email($_POST['email'])) { $email = $_POST['email']; } else { $errors['email'] = 'Please provide a valid e-mail address.'; } } else { $errors['email'] = 'Please provide your e-mail address.'; }