PHP如何隐藏电子邮件地址的一部分



我目前有这个:

    $value = preg_replace('@hotmail.com', '***********', $value);
    $value = preg_replace('yahoo.com', '***********', $value);
    $value = preg_replace('outlook.com', '***********', $value);
    $value = preg_replace('mailinator.com', '***********', $value);
    $value = preg_replace('live.com', '***********', $value);
    $value = preg_replace('live.nl', '***********', $value);

但是我怎样才能像这样显示电子邮件地址:朱利安库特******电子邮件是: juliankuitert@hotmail.com

并且不必用*替换所有电子邮件提供商(如 hotmail.com)

提前感谢!

echo preg_replace('/(?<=.).(?=.*@)/u','*','TestEmail@Google.com');

会回来

T********@Google.com

我正在使用这个函数

function maskEmail($email, $minLength = 3, $maxLength = 10, $mask = "***") {
   $atPos = strrpos($email, "@");
   $name = substr($email, 0, $atPos);
   $len = strlen($name);
   $domain = substr($email, $atPos);
   if (($len / 2) < $maxLength) $maxLength = ($len / 2);
  $shortenedEmail = (($len > $minLength) ? substr($name, 0, $maxLength) : "");
  return  "{$shortenedEmail}{$mask}{$domain}";
 }

这是一个例子

echo maskEmail('abcdfghi@example.com'); // abcd***@example.com

我的 PhP 太生疏了,无法放置代码示例,但这是我将使用的逻辑:

  1. 在字符串 2 中找到@符号索引)
  2. 将字符串截断为 X 个字符,X 是在步骤 1 上找到的数字减去某个字符数(由您决定)
  3. 将一定数量的*添加到您在步骤 2 中获得的字符串

请注意,在步骤 2 中,如果 X <= 0,则整个字符串应替换为 * 个字符

有时显示

最后一个字符也很好。

我建议你保持简单。也许这样的事情很简单https://github.com/fedmich/PHP_Codes/blob/master/mask_email.php

屏蔽电子邮件以显示前 3 个字符,然后显示 @ 符号之前的最后一个字符

ABCDEFZ@gmail.com 成为A*****Z@gmail.com

function mask_email( $email ) {
    /*
    Author: Fed
    Simple way of masking emails
    */
    $char_shown = 3;
    $mail_parts = explode("@", $email);
    $username = $mail_parts[0];
    $len = strlen( $username );
    if( $len <= $char_shown ){
        return implode("@", $mail_parts );  
    }
    //Logic: show asterisk in middle, but also show the last character before @
    $mail_parts[0] = substr( $username, 0 , $char_shown )
        . str_repeat("*", $len - $char_shown - 1 )
        . substr( $username, $len - $char_shown + 2 , 1  )
        ;
    return implode("@", $mail_parts );
}

最新更新