How can I make an email mask with PHP?

Asked

Viewed 1,019 times

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_______2015-_____@__tmail.com

  • Format mask or validation?

  • @rray mascara mesmo. I take it full and return the way it is in the description of the question. My goal is to hide some characters when showing the email to the user

  • which mask pattern you want to apply?

1 answer

3


I created this function below because I noticed that the pattern you need wouldn’t be easy just with 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;

 ?>

He returns this:

stacko_______2015-______@__tmail.com

email: [email protected]

He returns this:

geo______98__75@__quina.com.br

Browser other questions tagged

You are not signed in. Login or sign up in order to post.