Una explicación de las declaraciones de verificación de correo electrónico más utilizadas en PHP
Autor:Eve Cole
Fecha de actualización:2009-06-06 18:17:18
Creo que cualquiera que haya estudiado bien PHP debería conocer la siguiente declaración para la verificación de correo electrónico, pero no muchos pueden entenderla realmente:
<?php
if (eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[az]{2,3}$",$ correo electrónico)) {
echo "Su correo electrónico pasó la inspección preliminar";
}
?>
En esta frase, lo primero es aplicar una función eregi, que es bastante fácil de entender. Simplemente busca un libro y te dará una explicación:
Sintaxis: int ereg(patrón de cadena, cadena de cadena, matriz [regs]);
Valor de retorno: entero/matriz Esta función analiza y compara cadenas según reglas de patrones.
El valor devuelto por el resultado de la comparación se coloca en el parámetro de matriz regs. El contenido de regs[0] es la cadena original, regs[1] es la primera cadena que cumple con las reglas y regs[2] es la segunda cadena. que se ajuste a las reglas, etc. Si se omite el parámetro regs, simplemente se comparará y el valor de retorno será verdadero si se encuentra.
Lo que no es fácil de entender es la expresión regular anterior: ^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[ az]{2 ,3}$
En esta expresión regular, "+" significa que la cadena anterior aparece una o más consecutivamente; "^" significa que la siguiente cadena debe aparecer al principio y "$" significa que la cadena anterior debe aparecer al final;
"." también es ".", donde "" es un carácter de escape; "{2,3}" significa que la cadena anterior puede aparecer 2 o 3 veces seguidas. "()" significa que el contenido contenido también debe aparecer en el objeto de destino. "[_.0-9a-z-]" significa cualquier carácter contenido en "_", ".", "-", letras en el rango de la a a la z y números en el rango del 0 al 9;
De esta forma, esta expresión regular se puede traducir así:
"Los siguientes caracteres deben comenzar con (^)", "El carácter debe estar contenido en "_", ".", "-", letras en el rango de la a a la z, números en el rango del 0 al 9 ([ _.0-9a-z-])", "El carácter anterior aparece al menos una vez (+)", @, "La cadena consta de una letra contenida en el rango de la a a la z, del 0 al 9 comienza con una carácter en un número, seguido de al menos un carácter contenido en "-", cualquier letra en el rango de la a a la z, cualquier número en el rango del 0 al 9, y finalmente termina con (([0-9a -z. ][0-9a-z-]+.))", "El carácter anterior aparece al menos una vez (+)", "Las letras en el rango de la a a la z aparecen 2-3 veces y terminan con él ([ az] {2,3}$)”
Es complicado, ¿verdad? Por eso la gente usa expresiones regulares.