PHP:¿Cómo validar e-mail de una forma más compleja?

De Foros del Web

Aquí está la solución. Usaremos "eregi", variables globales, regexps, if-else.

Código PHP:

$email_correcto = "^[a-z0-9_\+-]+(\.[a-z0-9_\+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,4})$"; 
$caracteres_extranos = "^[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+(\.[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,})$"; 
 
// Validamos la dirección, usamos caracteres comunes 
if (eregi($email_correcto, $email)) { 
  echo("La dirección <i>$email</i> es válida."); 
} 
 
/* Validamos la dirección, tomamos en cuenta que algunos proveedores permiten caracteres extraños.*/ 
else if (eregi($caracteres_extranos, $email)) { 
  echo("La dirección <i>$email</i> contiene caracteres extraños, pero comúnmente no afecta el script. Se tomará como válida."); 
} 
 
// Si nada de lo anterior pasa... return false 
else { 
  echo("La dirección <i>$email</i> no es válida."); 
}  

--urgido 31 Oct 2006

Este artículo es parte de las FAQs de PHP y el Manual de PHP.

Herramientas personales