Función en PHP para comprobar si un email es válido - Explicación

Algunos me habéis pedido que os explique cómo funciona el sencillo script que publiqué el otro día:

if (ereg("([A-Za-z0-9_.-]+@[A-Za-z0-9_.-]+\.[A-Za-z0-9_-]+)", $email, $resultado))
{
    echo $resultado[1];
}

Pues vamos a analizarlo un poco.

La función ereg analiza la cadena $email, buscando si hay texto que se ajuste al patrón:

[A-Za-z0-9_.-]+@[A-Za-z0-9_.-]+\.[A-Za-z0-9_-]+

y almacene el resultado en el array $resultado.

El patrón parece algo críptico pero es bastante sencillo:

[A-Za-z0-9_.-] : sirve para indicar que buscamos un texto que contenga las letras de la ‘A’ a la ‘Z’, de la ‘a’ a la ‘z’, dígitos entre 0 y 9 y los símbolos ‘_’, ‘.’ y ‘-’.

El símbolo + a continuación indica que pueden ser uno o más caracteres.

Un email suele estar compuesto de las siguientes partes:

usuario@subdomino1.subdominio2.dominio.extensión

(no son los nombres correctos pero los pongo así para entendernos).

con el patrón que hemos usado quedaría algo así:


usuario: [A-Za-z0-9_.-]+
@: @
[A-Za-z0-9_\.-]+: subdomino1.subdominio2.dominio
.extensión: \.[A-Za-z0-9_-]+

Nótese que la extensión no admite ningún ‘.’.

Actualización: He corregido un pequeño un error en el patrón que hacía que aceptase emails con una barra invertida, como por ejemplo:

paco@email.com

Enlaces más o menos relacionados

  • Función en PHP para comprobar si un email es válido
  • Evitar a los spambots
  • QT+MySQL (2ª parte): Comprobar si está disponible el driver MySQL para QT
  • Script PHP para extraer emails de uno o varios ficheros
  • Copias de seguridad MySQL automáticas con BASH y CRON
  • One Response to “Función en PHP para comprobar si un email es válido - Explicación” »»

    1. Comentario by Zarpele | 06/24/08 at 8:15 am

      Me ah servido mucho esta explicacion gracias, saludos desde argentina….

    Escribe un comentario »»

    eXTReMe Tracker