Uma explicação das instruções de verificação de e-mail comumente usadas em PHP
Autor:Eve Cole
Data da Última Atualização:2009-06-06 18:17:18
Acredito que qualquer pessoa que tenha estudado bem PHP deveria conhecer a seguinte declaração para verificação de e-mail, mas poucos conseguem realmente entendê-la:
<?php
if (eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[az]{2,3}$",$ e-mail)) {
echo "Seu e-mail passou na inspeção preliminar";
}
?>
Nesta frase, a primeira coisa é aplicar uma função eregi, que é bastante fácil de entender. Basta encontrar um livro e ele lhe dará uma explicação:
Sintaxe: int ereg(string padrão, string string, array [regs]);
Valor de retorno: inteiro/matriz Esta função analisa e compara strings com base em regras padrão.
O valor retornado pelo resultado da comparação é colocado no parâmetro da matriz regs. O conteúdo de regs[0] é a string original, regs[1] é a primeira string que está em conformidade com as regras e regs[2] é a segunda string. que está em conformidade com a string de regras e assim por diante. Se o parâmetro regs for omitido, ele será simplesmente comparado e o valor de retorno será verdadeiro se for encontrado.
O que não é fácil de entender é a expressão regular anterior: ^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[ az]{2 ,3}$
Nesta expressão regular, "+" significa que a string anterior aparece uma ou mais consecutivamente, "^" significa que a próxima string deve aparecer no início e "$" significa que a string anterior deve aparecer no final;
"." também é ".", onde "" é um caractere de escape "{2,3}" significa que a string anterior pode aparecer 2 a 3 vezes seguidas; "()" significa que o conteúdo contido também deve aparecer no objeto de destino. "[_.0-9a-z-]" significa qualquer caractere contido em "_", ".", "-", letras no intervalo de a a z e números no intervalo de 0 a 9;
Desta forma, esta expressão regular pode ser traduzida assim:
"Os seguintes caracteres devem começar com (^)", "O caractere deve estar contido em "_", ".", "-", letras no intervalo de a a z, números no intervalo de 0 a 9 ([ _.0-9a-z-])", "O caractere anterior aparece pelo menos uma vez (+)", @, "A string consiste em uma letra contida no intervalo de a a z, de 0 a 9 começa com um caractere em um número, seguido por pelo menos um caractere contido em "-", qualquer letra no intervalo de a a z, qualquer número no intervalo de 0 a 9 e finalmente termina com (([0-9a -z. ][0-9a-z-]+.))", "O caractere anterior aparece pelo menos uma vez (+)", "Letras no intervalo de a a z aparecem 2-3 vezes e terminam com ele ([ az] {2,3}$)”
É complicado, certo? É por isso que as pessoas usam expressões regulares.