0

私は現在これを持っています:

    $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 のようなすべての電子メール プロバイダーを*に置き換える必要はありません

前もって感謝します!

4

4 に答える 4

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

戻ります

T********@Google.com
于 2013-11-12T17:34:53.263 に答える
1

この機能を使っています

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
于 2014-12-23T08:13:20.853 に答える
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 );
}
于 2015-10-30T10:24:03.023 に答える