-
Dúvda replace
Fala galerinha bom dia , estou quebrando a cabeça aqui e nao estou conseguindo , nao sei muito de php rs
Entao eu tenho essa função $account->getEMail()
Ela pega o email do usuario logado , eu quero fazer assim
contar tantas letras antes do @ e subistituir por **
exemplo : [Only registered and activated users can see links. Click Here To Register...]
usando o exemplo acima ocultar 4 letras antes do @
entao ficaria assim
emailt****@email.com
Alguem pode me ajudar?
-
Facilita minha vida, vai... posta o script todo aqui
-
Código PHP:
echo "<div class='tablestyletitle' >Informações da Conta</div>";
echo "<table class='tablestyle' style='text-align: left;' width='100%'>";
echo "<tbody>";
echo "<tr><th width='150px'>Conta</th><td>".($_SESSION['name'])."</td></tr><tr><th>E-Mail</th><td>".substr_replace($var, '******', -7 - $p, -$p)." </td></tr><tr><th>Chave de recuperação</th><td>
</td></tr><tr><th>POST Points</th><td>".$account->getPremiumPoints()." </td></tr><tr><th>Status</th><td><font color=green>Você tem ".$account->getPremDays()." Dias de VIP restantes. </font></td></tr><tr><th>ID da Conta :</th><td>".($_SESSION['account_id'])."</td></tr></tbody></table>";
echo "</tbody>";
echo "</table>";
-
Código PHP:
$var = $account->getEMail();
$p = strpos($var, '@');
echo "<div class='tablestyletitle' >Informações da Conta</div>";
echo "<table class='tablestyle' style='text-align: left;' width='100%'>";
echo "<tbody>";
echo "<tr><th width='150px'>Conta</th><td>".($_SESSION['name'])."</td></tr><tr><th>E-Mail</th><td>".substr_replace($var, '****', $p - 4, ($p - strlen($var)))." </td></tr><tr><th>Chave de recuperação</th><td>
</td></tr><tr><th>POST Points</th><td>".$account->getPremiumPoints()." </td></tr><tr><th>Status</th><td><font color=green>Você tem ".$account->getPremDays()." Dias de VIP restantes. </font></td></tr><tr><th>ID da Conta :</th><td>".($_SESSION['account_id'])."</td></tr></tbody></table>";
echo "</tbody>";
echo "</table>";
Só que já aviso que se o email tiver menos de 4 letras, como "[email protected]", vai bugar e ficar algo como "[email protected]****m".
-
Muito obrigado
apenas modifiquei colocando o -7 e funcionou deixando o @
Código PHP:
".substr_replace($var, '****', -7 - $p, ($p - strlen($var)))."
-
7 é muita coisa cara. Vai bugar com emails curtos.
-
Era so pra testar no meu email que era grande rs , eu coloquei - 4 , acho muito dificil alguem usar um email menos que 4 letras
Mais uma vez obrigado.
-
Códigozinho antigo que eu usava:
Resultado:
Código:
a@***om
a@***co*
a@***.c**
ab***co*
ab***.c**
ab***.c**
ab***bc***m
ra***l@***in***co***r
Deve servir né?
[]'s
-
Você pode usar split também, para dividir os caracteres antes e depois do @.
-
Como você não sabe o tamanho exato do e-mail, é melhor colocar pra ocultar metade dele e a função ficaria +/- assim:
Código:
function MailMask($address)
{
$partial = explode('@', $address);
$maskLen = ceil(strlen($partial[0])/2);
$restLen = strlen($partial[0])-$maskLen;
$readable = substr($partial[0], 0, $restLen);
$asterisk = str_repeat('*', $maskLen);
return sprintf('%s%s@%s', $readable, $asterisk, $partial[1]);
}
Saída:
[Only registered and activated users can see links. Click Here To Register...] = impe****@gmail.com
PS: Não testei, então se der algum erro é só dizer qual é.