How can I make an email mask with PHP?

4

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

asked by anonymous 09.10.2015 / 20:38

1 answer

3

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

10.10.2015 / 08:48