Validar e-mail em PHP

Subodh Poudel 30 janeiro 2023
  1. Use a função filter_var() e FILTER_VALIDATE_EMAIL para validar o e-mail em PHP
  2. Use as funções FILTER_VALIDATE_EMAIL, FILTER_SANITIZE_EMAIL e filter_var() para validar o e-mail em PHP
  3. Use a função preg_match() para validar o e-mail de acordo com a expressão regular
Validar e-mail em PHP

Apresentaremos um método para validar um endereço de e-mail em PHP usando a função filter_var() e o ID do nome do filtro FILTER_VALIDATE_EMAIL. A função filter_var() leva o email como o primeiro argumento e o nome do filtro FILTER_VALIDATE_EMAIL para validar o email em relação à sintaxe em RFC 822. Este método verifica o formato de email válido em vez do email válido.

Também demonstraremos outro método para validar endereços de e-mail em PHP usando os ids de nome de filtro FILTER_SANITIZE_EMAIL e FILTER_VALIDATE_EMAIL junto com a função fiter_var(). Este método primeiro limpa o endereço de e-mail e, em seguida, valida o endereço de e-mail.

Apresentaremos outro método para validar e-mail em PHP usando a expressão regular. Este método usa a função preg_match() para verificar se o e-mail é válido de acordo com a expressão regular fornecida.

Use a função filter_var() e FILTER_VALIDATE_EMAIL para validar o e-mail em PHP

Podemos usar a função filter_var() para filtrar uma variável com um nome de filtro particular. O nome do filtro FILTER_VALIDATE_EMAIL especifica que o e-mail precisa ser verificado. A função usa o endereço de e-mail como uma string como o primeiro parâmetro e o id do filtro especificado acima como o segundo parâmetro. Assim, podemos verificar se o email fornecido é válido. A função retorna os dados filtrados se a função for bem-sucedida ou retornar falso. O e-mail é considerado válido, não no sentido em que o e-mail existe. A identificação do filtro valida o e-mail em relação à sintaxe em RFC 822. Podemos testar a validação de e-mail usando um e-mail válido e um inválido.

Por exemplo, crie uma função validateEmail() que recebe um parâmetro $email. Use a função filter_var() na variável $email e especifique o id do filtro FILTER_VALIDATE_EMAIL como o segundo parâmetro. Aplique a condição if-else na função filter_var(). No bloco if, exiba a mensagem dizendo que o e-mail é válido, e na condição else, exiba que o e-mail é inválido. Fora da função, chame a função duas vezes. Na primeira chamada de função, forneça o argumento peter.piper@iana.org e first.last@example.123
na segunda chamada.

Podemos assumir que o endereço de e-mail fornecido no exemplo é acessado a partir de um formulário usando a variável $_POST. A função no exemplo abaixo é chamada duas vezes. A primeira chamada passa um endereço de e-mail válido e o segundo endereço passa um e-mail inválido. O segundo endereço de e-mail é inválido porque contém números no domínio de nível superior. O resultado é tão óbvio.

Código de exemplo:

#php 7.x
<?php
function validateEmail($email) {
    if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
        echo "{$email}: A valid email"."<br>";
    }
    else {
        echo "{$email}: Not a valid email"."<br>";
    }
}
validateEmail('peter.piper@iana.org');
validateEmail('first.last@example.123');
?>

Resultado:

phppeter.piper@iana.org: A valid email 
first.last@example.123:Not a valid email

Use as funções FILTER_VALIDATE_EMAIL, FILTER_SANITIZE_EMAIL e filter_var() para validar o e-mail em PHP

Podemos usar o ID de nome de filtro adicional FILTER_SANITIZE_EMAIL no primeiro método para remover todos os caracteres ilegais de um endereço de e-mail. O nome do filtro id é o segundo argumento na função filter_var(), onde o endereço de e-mail é o primeiro argumento. A função retorna o e-mail limpo. Podemos usar a função novamente para verificar a validade do endereço de e-mail após a higienização. Para isso, podemos seguir o primeiro método usando o ID do nome do filtro FILTER_VALIDATE_EMAIL.

Por exemplo, crie uma variável $email e armazene um endereço de e-mail com caracteres ilegais. Armazene o e-mail ram(.mugu)@exa//mple.org como uma string na variável. Use a função filter_var() na variável e use o id FILTER_SANITIZE_EMAIL como o segundo parâmetro. Armazene a função na mesma variável $email. Em seguida, aplique a instrução if-else como no primeiro método. Desta vez, use o e-mail FILTER_VALIDATE_EMAIL como o nome do filtro na função. Da mesma forma, exiba as mensagens.

Um endereço de e-mail com um caractere ilegal é obtido no exemplo abaixo, e a função filter_var() filtra esses caracteres e limpa o e-mail fornecido. O endereço de e-mail fornecido no exemplo contém caracteres ilegais, como () e //. A função primeiro remove esses caracteres do e-mail e, em seguida, valida o e-mail.

Código de exemplo:

#php 7.x
<?php
$email = "ram(.mugu)@exa//mple.org";
$email = filter_var($email, FILTER_SANITIZE_EMAIL);
if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo "{$email}: A valid email"."<br>";
}
else{
    echo "{$email}:Not a valid email"."<br>";
}
?>

Resultado:

ram.mugu@example.org: A valid email

Use a função preg_match() para validar o e-mail de acordo com a expressão regular

Podemos usar a função preg_match() para validar o endereço de e-mail em PHP. Este método usa a expressão regular para a regra de validação do e-mail. Podemos criar uma expressão regular e definir as regras para um e-mail válido. A função preg_match() leva dois parâmetros onde o primeiro é a expressão regular, e o segundo é o e-mail a ser verificado. Podemos usar o operador ternário para verificar a validade do e-mail junto com a função.

Por exemplo, crie duas variáveis, $email_first e $email_secon, e armazene dois endereços de e-mail nessas variáveis. Armazene um e-mail válido firstlast11@gmail.com primeiro e armazene um inválido firstlast11@gmail.com no segundo. Escreva uma função validateEmail() que receba um parâmetro. Nomeie o parâmetro $email. Dentro da função, escreva uma expressão regular na variável $regex como no código de exemplo. Em seguida, escreva um operador ternário onde a condição a ser verificada é a função preg_match(). Pegue o $regex como o primeiro parâmetro e o $email como o segundo parâmetro. Imprima a mensagem dizendo que o e-mail é válido quando a condição é verdadeira e a mensagem dizendo que o e-mail é inválido quando a condição é falsa. Ecoe toda a expressão ternária. Fora da função, chame a função validateEmail() duas vezes. Use a variável $email_first na primeira chamada de função e use a variável $email_second na segunda chamada de função.

No exemplo abaixo, escrevemos uma expressão regular que cria uma regra para validar o e-mail. Um e-mail válido contém um nome de destinatário, símbolo @, um domínio e um domínio de nível superior. A expressão regex criada acima aceita o nome do destinatário como valores alfanuméricos. O alfabeto consiste em maiúsculas e minúsculas. Ele também aceita um período. O e-mail deve ter o símbolo @. O domínio contém apenas os alfabetos. O e-mail deve ter um ponto então. O domínio de nível superior deve consistir apenas em alfabetos e deve ter um comprimento de dois ou três. A expressão regex é criada com base nesta regra. O primeiro e-mail é válido porque cumpre todas as regras, mas o segundo e-mail é inválido. É inválido porque há um número no nome de domínio e não há ponto antes do domínio de nível superior.

Código de exemplo:

# php 7.x
<?php
$email_first = 'firstlast11@gmail.com';
$email_second ='firstlast@11gmail,com';
function validateEmail($email) {
    $regex = "/^([a-zA-Z0-9\.]+@+[a-zA-Z]+(\.)+[a-zA-Z]{2,3})$/";
    echo preg_match($regex, $email) ? "The email is valid"."<br>" :"The email is       not valid";
}
validateEmail($email_first);
validateEmail($email_second);
?>

Resultado:

The email is valid 
The email is not valid
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn