2015-04-02 20 views
-2

是一個虛擬的電子郵件ID說的備選單詞,面具郵件與使用下述PHP

[email protected] 

如何使用部分PHP屏蔽此電子郵件ID?我需要

輸出

我曾嘗試下面的代碼,但它不是作品如下要求

 $prop=3; 
$domain = substr(strrchr($Member_Email, "@"), 1); 
$mailname=str_replace($domain,'',$Member_Email); 
$name_l=strlen($mailname); 
$domain_l=strlen($domain); 
    for($i=0;$i<=$name_l/$prop-1;$i++) 
    { 
    $start.='*'; 
    } 

    for($i=0;$i<=$domain_l/$prop-1;$i++) 
    { 
    $end.='*'; 
    } 

$MaskMail = substr_replace($mailname, $start,2, $name_l/$prop).substr_replace($domain, $end, 2, $domain_l/$prop); 
+0

如何加密與解密! – Daenarys 2015-04-02 09:10:02

+0

[你有什麼試過?](http://mattgemmell.com/what-have-you-tried/) – MLeFevre 2015-04-02 09:10:06

回答

0

給這樣的嘗試。

$delimeter = '@'; 
$mail_id = '[email protected]'; 
$domain = substr(strrchr($mail_id, $delimeter), 1); 
$user_id = substr($mail_id,0,strpos($mail_id, $delimeter)); 
$string_array = str_split($user_id); 

$partial_id = NULL; 

foreach($string_array as $key => $val){ 

    if($key % 2 == 0){ 
     $partial_id .=$val; 
    }else{ 
     $partial_id .='*' ; 
    } 

} 
echo $partial_id.$delimeter.$domain; 
0
$mail='[email protected]'; 

$mail_first=explode('@',$mail); 
$arr=str_split($mail_first[0]); 
$mask=array(); 

for($i=0;$i<count($arr);$i++) { 
    if($i%2!=0) { 
     $arr[$i]='*'; 
    } 

    $mask[]=$arr[$i]; 
} 

$mask=join($mask).'@'.$mail_first[1]; 
echo $mask; 

結果是:

a*c*e*g*i*@gmail.com 
0

這裏有一個沒有循環辦法用面膜來取代電子郵件的用戶名的第二個字符。

使用本機的功能 splitpreg_replace用正則表達式 /(.)./,並 implode

自定義PHP函數:

echo email_mask('[email protected]'); 
// a*c*e*g*i*k*@gmail.com 

function email_mask($email) { 
    list($email_username, $email_domain) = split('@', $email); 
    $masked_email_username = preg_replace('/(.)./', "$1*", $email_username); 
    return implode('@', array($masked_email_username, $email_domain)); 
} 

正則表達式說明:

正則表達式開始在字符串的開頭,匹配2個字符並捕獲這兩個中的第一個,用第一個字符替換匹配,後面跟星號*preg_replace在整個剩餘的字符串中重複此操作,直到它不再匹配一對字符。

0

它需要那麼多星號嗎? 這樣很難閱讀。

我會建議你保持簡單。 也許這樣的事情就足夠了 https://github.com/fedmich/PHP_Codes/blob/master/mask_email.php

面具@符號

[email protected]成爲 一個*****ž@ Gmail之前顯示前3個字符的電子郵件,然後最後一個字符.COM

下面是完整的代碼,這也是在Github上鍊接

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