我有一个包含电子邮件ID的变量,如
axceasddfe.gdfs@cif.in
和csderid.asldfj@xiz.com
我想先显示前四个字符,然后**
继续替换字符然后@
并继续**
和com
或in
< / p>
示例:
$email_id = "axceasddfe.gdfs@cif.in";
$email_text = convertEmailFormat($email_id);
echo $email_text; // ouput axce**********@****in
我想要convertEmailFormat
功能。
答案 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;
}