Como validar enderezos de correo electrónico nun script PHP

Enderezo de correo electrónico: fácil de crear, difícil de escribir.

Moito pode dar mal. Moito pode parecer todo mal e estar ben. Moito pode verse ben e non funcionar en absoluto.

Obtendo os enderezos de correo electrónico que recolle - por un boletín informativo, por exemplo, ou por recuperación de contrasinal - polo menos, de acordo cos estándares (se non se asegura) é fundamental, por suposto, e extremadamente complicado.

Afortunadamente, PHP (5 e versións posteriores) vén cun conxunto práctico de funcións e filtros que fan que as probas para a validación do correo electrónico sexan rápidas.

Valide enderezos de correo electrónico nunha secuencia PHP

Para validar un enderezo de correo electrónico para a veracidade (non comprobar se a dirección está funcionando e lida) en PHP:

FILTER_VALIDATE_EMAIL Validación de enderezos de correo electrónico de PHP

Ten en conta que FILTER_VALIDATE_EMAIL validará enderezos de correo electrónico que conteñan dominios e dominios de alto nivel que non existan. Se desexa evitar estes, pode probar os dominios de nivel superior que teñan máis de 4 caracteres (o que fará erróneamente expulsar ".museo") ou os nomes de dominio que sexan de 2 caracteres de lonxitude (todo o país superior- dominios de nivel) ou un dos dominios de nivel superior coñecidos (que terá que actualizar a medida que a lista cambie).

FILTER_VALIDATE_EMAIL borrará incorrectamente os enderezos de correo electrónico con longos nomes de dominio (64 caracteres ou máis) e nos enderezos de correo electrónico con caracteres escapados (como "me" @ exemplo.com "). Para evitar estes falsos positivos , pode recorrer a clase como php-email-address-validation.

Exemplos de validación de enderezo de correo electrónico FILTER_VALIDATE_EMAIL

Supoñendo que $ email_address mantén a dirección a verificar, pode probar a súa validez usando:

Tamén pode filtrar un enderezo de correo directo do formulario web (supoñendo que a dirección de correo electrónico foi capturada no campo co nome "correo electrónico"):