Com a função PHP sanitize_email() você remove todos os caracteres inválidos de um e-mail. Veja abaixo alguns exemplos:
<?php
$email = "nome@dominio.com.br!";
$email_corrigido = sanitize_email( $email );
// Valor de $email_corrigido será: nome@dominio.com.br
$email = " nome@dominio.com.br ";
$email_corrigido = sanitize_email( $email );
// Valor de $email_corrigido será: nome@dominio.com.br (sem espaços)
$email = "nome@dominio";
$email_corrigido = sanitize_email( $email );
// Valor de $email_corrigido será: (vazio)
$email = "nomedominio.com.br";
$email_corrigido = sanitize_email( $email );
// Valor de $email_corrigido será: (vazio)
Code language: PHP (php)
Já a função PHP is_email() faz uma verificação básica se o conteúdo é um e-mail ou não, retornando o e-mail caso for verdadeiro e false
caso não for um e-mail. É importante salientar que não é verificado se o endereço de e-mail existe ou não, somente se o formato dos caracteres na string fornecida segue o formato básico de e-mail.
Qual a diferença entre sanitize_email() e is_email()?
Veja abaixo alguns exemplos comparando o retorno de cada uma das funções para alguns diferentes valores:
Valor / Retorno da função | sanitize_email() | is_email() |
---|---|---|
nome@dominio.com.br | nome@dominio.com.br | nome@dominio.com.br |
nome@domin!!!!io.com.br | nome@dominio.com.br | false |
nome@dominio | (vazio) | false |
nome@dominio..com | (vazio) | false |
acentuação@dominio.com | acentuao@dominio.com | false |
A principal diferença entre as duas funções é que a is_email() sempre irá retornar false
se o e-mail possuir qualquer caractere inválido (incluindo espaços) sem fazer qualquer alteração nele, enquanto a função sanitize_email() irá retornar uma string sem os caracteres inválidos ou vaziosempre caso o e-mail tenha um formato inválido.
Se você for salvar o e-mail em um banco de dados, como boa prática de segurança, recomendo utilizar as duas funções. Veja abaixo um exemplo onde o e-mail é recebido na variável $email
:
<?php
$email = "nome@dominio.com";
// Primeiro verifica se o e-mail é válido
if ( is_email( $email ) ) {
// Depois garante que não há nenhum caractere inválido no e-mail
$email_corrigido = sanitize_email( $email );
if ( !empty( $email_corrigido ) ) {
// Adicione aqui um código que faz algo com
// o e-mail utilizando a varíavel $email_corrigido
} else {
_e( 'O e-mail fornecido é inválido.', 'danielkossmann' );
}
} else {
_e( 'O e-mail fornecido é inválido.', 'danielkossmann' );
}
Code language: PHP (php)
Se não for crítico que o e-mail seja válido (como em um formulário de contato com um campo obrigatório de número de telefone), apenas a utilização da função sanitize_email() é o suficiente para garantir a segurança do código.
Se você quiser saber mais sobre quais caracteres são permitidos ou não em endereços de e-mail, recomendo o artigo da Wikipedia sobre endereços de e-mail.
Deixe um comentário