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

php如何隐藏电子邮件地址的一部分?,php,email,hide,Php,Email,Hide,我目前有: $value = preg_replace('@hotmail.com', '***********', $value); $value = preg_replace('yahoo.com', '***********', $value); $value = preg_replace('outlook.com', '***********', $value); $value = preg_replace('mailinator.com', '*****

我目前有:

    $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);
但是我怎样才能显示这样的电子邮件地址:juliankuit*******? 电邮地址:juliankuitert@hotmail.com

而且不必将hotmail.com等所有电子邮件提供商替换为*


提前谢谢

我的PhP太生疏了,无法给出代码示例,但下面是我将使用的逻辑:

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

  • 请注意,在第2步中,如果X我的PhP太生疏,无法给出代码示例,那么我将使用以下逻辑:

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

  • 请注意,在第2步中,如果X我的PhP太生疏,无法给出代码示例,那么我将使用以下逻辑:

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

  • 请注意,在第2步中,如果X我的PhP太生疏,无法给出代码示例,那么我将使用以下逻辑:

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

  • 请注意,在步骤2中,如果X我正在使用此函数

    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}";
     }
    

    我正在使用这个函数

    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}";
     }
    

    我正在使用这个函数

    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}";
     }
    

    我正在使用这个函数

    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}";
     }
    

    有时候,最后一个角色也可以演

    我建议你保持简单。 也许像这样的事情很简单

    屏蔽电子邮件以显示前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 );
    }
    
    功能掩码\u电子邮件($email){
    /*
    作者:美联储
    屏蔽电子邮件的简单方法
    */
    $char_所示=3;
    $mail_parts=爆炸(“@”,$email);
    $username=$mail_parts[0];
    $len=strlen($username);
    
    如果($len有时最好也显示最后一个字符

    我建议你保持简单。 也许像这样的事情很简单

    屏蔽电子邮件以显示前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 );
    }
    
    功能掩码\u电子邮件($email){
    /*
    作者:美联储
    屏蔽电子邮件的简单方法
    */
    $char_所示=3;
    $mail_parts=爆炸(“@”,$email);
    $username=$mail_parts[0];
    $len=strlen($username);
    
    如果($len有时最好也显示最后一个字符

    我建议你保持简单。 也许像这样的事情很简单

    屏蔽电子邮件以显示前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 );
    }
    
    功能掩码\u电子邮件($email){
    /*
    作者:美联储
    屏蔽电子邮件的简单方法
    */
    $char_所示=3;
    $mail_parts=爆炸(“@”,$email);
    $username=$mail_parts[0];
    $len=strlen($username);
    
    如果($len有时最好也显示最后一个字符

    我建议你保持简单。 也许像这样的事情很简单

    屏蔽电子邮件以显示前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 );
    }
    
    功能掩码\u电子邮件($email){
    /*
    作者:美联储
    屏蔽电子邮件的简单方法
    */
    $char_所示=3;
    $mail_parts=爆炸(“@”,$email);
    $username=$mail_parts[0];
    $len=strlen($username);
    如果($len
    $value=preg_replace('..*','*****',$value);
    preg_replace
    使用正则表达式)
    $value=preg_replace('.*','*****',$value);
    preg_replace
    使用正则表达式)
    $value=preg_replace('.*.'.'.'''.'.'**','.**',$value)
    使用正则表达式)
    (“@.*”、“****”、$value);
    preg\u replace
    使用正则表达式)