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çãosanitize_email()is_email()
nome@dominio.com.brnome@dominio.com.brnome@dominio.com.br
nome@domin!!!!io.com.brnome@dominio.com.brfalse
nome@dominio(vazio)false
nome@dominio..com(vazio)false
acentuação@dominio.comacentuao@dominio.comfalse

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.



Comments

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *