php打印电子邮件ID,隐藏了一些部分

时间:2014-03-06 08:36:13

标签: php

我有一个包含电子邮件ID的变量,如

axceasddfe.gdfs@cif.incsderid.asldfj@xiz.com

我想先显示前四个字符,然后**继续替换字符然后@并继续**comin < / p>

示例:

$email_id = "axceasddfe.gdfs@cif.in";
$email_text = convertEmailFormat($email_id);

echo $email_text; // ouput axce**********@****in

我想要convertEmailFormat功能。

2 个答案:

答案 0 :(得分:1)

试试这个:

  function obscure_email($email){
       $email_array=explode('@', $email);
       $email_word=$email_array[0];
           $email_domain=$email_array[1];
       $obscured_email=substr($email_word, 0, 3);
       for($i=3; $i<strlen($email_word); $i++){
         $obscured_email.='*';
       }
           $obscured_email.='@';
           for($i=0; $i<strlen($email_domain)-2; $i++){
               $obscured_email.='*';
           }
       return $obscured_email.substr($email, -2, strlen($email));
   }
   echo obscure_email('test@testing.com');

打印:

   tes*@*********om 

答案 1 :(得分:0)

我正在为自己的问题提供答案。我认为可能有一个简短的方法或其他逻辑。所以任何更新或更好的解决方案将不胜感激。

function convertEmailFormat($email_id)
{
    $arr_temp = str_split($email_id);
    $email_text = "";
    $at =  0;
    $dot = 0;
    for($i=0; $i<sizeof($arr_temp); $i++)
    {
        $char = "*";
        if($i<4)
        {   
            $char = $arr_temp[$i];
            if($arr_temp[$i]=='@')
            {
                $at = 1;
            }
        }
        else
        {
            if($arr_temp[$i]=='@')
            {
                $char = $arr_temp[$i];
                $at = 1;
            }
            else if($at==1 && $arr_temp[$i]=='.')
            {
                $dot=1;
            }
            else if($dot==1)
            {
                $char = $arr_temp[$i];
            }
        }

        $email_text .= $char;

    }
    return $email_text;
}