Como validar e-mail com php sem usar expressão regular
Por:
Natanael L. Freire | Em:
23/05/2009 | Na categoria:
PHP
Para verificarmos se certo dado é um e-mail ou não é comum utilizarmos expressões regulares e funções como preg_match(). Neste tutorial de hoje iremos aprender uma função nativa do php para validar e-mail sem sacrifício.
A vantagem de utilizar essa solução é que seu script fica bem menor e, principalmente, não fica confuso, com expressões regulares que muitas vezes não entendemos. Como o php tem uma função para validação de e-mail, vamos utilizá-la.
A validação de e-mail com expressão regular ficaria parecida com esta: <?php
$email = "emailteste@meusite.com";
if (preg_match ("/^[A-Za-z0-9]+([_.-][A-Za-z0-9]+)*@[A-Za-z0-9]+([_.-][A-Za-z0-9]+)*\\.[A-Za-z0-9]{2,4}$/", $email)) {
echo "O e-mail é válido!";
} else {
echo "O e-mail é inválido!";
}
?>
Podemos perceber que esta função não é a mais adequada, necessita de algum conhecimento de expressão regular e ainda pode causar erros. Tente validar o seguinte e-mail teste_@meusite.com com esta função . O resultado vai ser e-mail inválido, isto por conta do "_" antes do "@", mas este e-mail pode muito bem exisitir.
Então como validar e-mail facilmente com php
Vamos utilizar a função filter_var(), veja: <?php
$email = 'teste@meusite.com';
if(filter_var($email, FILTER_VALIDATE_EMAIL)){
echo 'E-mail válido';
}else{
echo 'E-mail invalido';
}
?>
Viu como é fácil, você não precisa reinventar a roda.
Nos próximo tutoriais iremos aprender como validar IP e URL com a função filter_var().
IMPORTANTE: Esta função só funciona com php 5 ou superior.
Até o próximo tutorial, abraços.
Comentários: (8)
MATERIAS RELACIONADAS
Comentários
Por: paulo cesar - em: 24/07/2009 - as: 11:59:01
obrigado por ter esse site como informação e ajuda, mas gostaria de aprender a validar no meu contato o e-mail, pois mesmo sem nada digitado, se a pessoa clica em enviar ele manda pro meu e-mail gostaria que tornasse obrigatorio a ter o e-mail validado
Por: Natanael L Freire - em: 31/07/2009 - as: 06:57:52
Olá Paulo,
desculpa a demora em responder.
É exatamente isso que a validação faz, no exemplo acima faz isso, ou seja, se o resultado for e-mail inválido você não envia o e-mail e pede para o usuário digitar corretamente, se o e-mail for válido você envia o e-mail normalmente.
Se ainda tiver dúvidas pode comentar.
Por: André - em: 30/08/2009 - as: 09:21:52
Olá, eu também fiz uma postagem sobre validação de email, só que usei um método muito funcional, que verifica se realmente o host existe.
http://www.gasparimsat.com/index.php/21/08/2009/validacao-do-email-pelo-host-usando-php/
Ex: A pessoa escreve email@bol.com.br, ele verifica se o host "Bol" existe.
Por: Sebastiao - em: 05/11/2010 - as: 01:19:59
Olá, amigo...boa. Como seria validar os seguintes dados em um formulario: 1/1,1/2,1/3...1/23,1/24,1/25; 1/23,1/24,1/25...23/23,23/24,23/25. Ou seja, o form só pode aceitar esses caracteres nos campos específicos. Aguardo sua resposta. Abraço.
Por: Gabriel - em: 28/09/2010 - as: 11:50:42
Parabéns cara, eu não conhecia esse comando... nunca vi '-'
Estou a utilizar! :)
Por: Vinicius Almeida - em: 24/02/2011 - as: 05:18:29
Muito boa a dica, muito melhor que expressões regulares.
Valeu!
Por: Daniel - em: 22/04/2011 - as: 10:36:13
Fantástica a dica, eu não conhecia essa função.
Vou deixar uma pergunta: você sabe como certificar que um email é acessível sem ter que, de fato, enviar um email para se certificar disso?
É que estou criando um formulário de cadastro de usuário que solicita seus vários emails. Quando o formulário é submetido eu envio uma mensagem de validação para cada um dos emails com a função mail(). Nesta iteração, se um destes email for recusado, então o formulário não é validado. Entretanto eu já terei enviado algum possível email de validação e não terei como desfazer isso, portanto, antes de enviar um email seria preciso certificar que o destino está disponível.
Por: Enoch - em: 24/03/2011 - as: 01:55:10
Obrigado pela dica.
Valeu muito simplificar meu script.
Até a proxima.
DEIXE SEU COMENTÁRIO