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:
[Somente usuários registrados podem vem os links. ] = impe****@gmail.com
PS: Não testei, então se der algum erro é só dizer qual é.