Como posso validar o valor de entrada é um endereço de email válido usando php5. Agora estou usando esse código
function isValidEmail($email){
$pattern = "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$";
if (eregi($pattern, $email)){
return true;
}
else {
return false;
}
}
mas mostra erro obsoleto. Como posso corrigir esse problema. Por favor me ajude.
php
regex
validation
email-validation
aprendiz
fonte
fonte
eregi
é uma função de) está preterido. Use PCRE .Respostas:
Você pode usar a
filter_var()
função, que oferece muitas opções úteis de validação e higienização.Manual do PHP filter_var ()
Disponível em PHP> = 5.2.0
Se você não deseja alterar seu código que depende de sua função, basta:
Nota : Para outros usos (onde você precisa do Regex), a
ereg
família de funções descontinuadas (Funções do POSIX Regex) deve ser substituída pelapreg
família ( Funções do PCRE Regex ). Há uma pequena quantidade de diferenças, a leitura do manual deve ser suficiente.Atualização 1 : Como apontado por @binaryLV :
Este bug já foi corrigido.
Atualização 2 : é claro que este método é validado
bazmega@kapa
como um endereço de email válido, porque na verdade é um endereço de email válido. Mas a maior parte do tempo na Internet, você também quer o endereço de email para ter um TLD:[email protected]
. Conforme sugerido nesta postagem do blog (link postado por @Istiaque Ahmed ), você pode aumentarfilter_var()
com uma regex que verificará a existência de um ponto na parte do domínio (não verificará embora TLD válido ):Como o @Eliseo Ocampos apontou, esse problema só existe antes do PHP 5.3, nessa versão eles alteraram o regex e agora ele faz essa verificação, então você não precisa.
fonte
eregi
, parece que ele está usando o PHP 5.3. Mas sim, é importante mencioná-lo (para outros)).FILTER_VALIDATE_EMAIL
que resultou em falha na validação de valores grandes. Solução simples e segura para isso é usarstrlen()
antesfilter_val()
. Não tenho certeza sobre o 5.3.4 final, mas está escrito que algumas versões do 5.3.4-snapshot também foram afetadas.filter_val
oufilter_var
?Veja as notas em http://www.php.net/manual/en/function.ereg.php :
fonte
Este é um post antigo, mas vou compartilhar uma minha solução, porque ninguém mencionou aqui um problema antes.
O novo endereço de email pode conter caracteres UTF-8 ou nomes de domínio especiais
.live
, como ,.news
etc.Também acho que algum endereço de email pode estar em cirílico e em todos os casos regex padrão ou
filter_var()
falhará.Foi por isso que fiz uma solução para isso:
Esta função funciona perfeitamente para todos os casos e formatos de email.
fonte
Eu sempre uso isso:
fonte
alex@.
, ele sempre retorna verdadeiro onde não é um endereço de email válido.Fique longe de
regex
efilter_var()
soluções para validar e-mail. Veja esta resposta: https://stackoverflow.com/a/42037557/953833fonte
Usar:
fonte
Antes da validação do email: primeiro você deve remover todos os caracteres ilegais do email.
depois disso, valide seu endereço de e-mail usando esta
filter_var()
função.Por exemplo
fonte