How do I make an email mask with PHP showing some letters, all numbers and special characters? Ex: [email protected] should look like this: stack
How do I make an email mask with PHP showing some letters, all numbers and special characters? Ex: [email protected] should look like this: stack
I created this function below, because I noticed that the pattern you need would not be easy with just regular expressions.
<?php
function mascara($email){
// vamos separar a string em 2 partes com explode
$mascara = explode("@", $email);
$part1Email = $mascara[0];
$part2Email = $mascara[1];
/*
PARTE 1 DA STRING:
*/
$quantidadeCarac = strlen($part1Email);
//calcula quantos caracteres tem na primeira parte da string
$inicio = $quantidadeCarac / 4;
// não vamos alterar o começo, então iremos separa-lo da string
$inicioString = substr($part1Email, 0, $inicio);
// fazemos a separação do inicio
$restanteString = str_replace($inicioString, "", $part1Email);
// pegaremos o restante
$restanteString = preg_replace( "/[^0-9_-]/", "_", $restanteString);
// vamos substituir tudo que não for numeros por "_"
/*
PARTE 2 DA STRING:
*/
$quantidadeCarac2 = strlen($part2Email);
// calcula quantos caracteres tem na segunda parte da string
$finalParte2 = substr($part2Email, 2, $quantidadeCarac2);
// vamos separar a parte final que não será alterada
$inicioParte2 = str_replace($finalParte2, "", $part2Email);
// separamos o começo
$inicioParte2 = preg_replace( "/[^0-9_-]/", "_", $inicioParte2);
// alteramos o começo
// finaliza a string juntando as partes
$mascaraNova = $inicioString.$restanteString."@".$inicioParte2.$finalParte2;
return $mascaraNova;
}
$string = "[email protected]";
$string = mascara($string);
echo $string;
?>
It returns this:
stacko