How To Replace Some Characters With Asterisks

前端 未结 4 2068
北海茫月
北海茫月 2020-12-10 09:23

I have a simple task to do with PHP, but since I\'m not familiar with Regular Expression or something... I have no clue what I\'m going to do.

what I want is very si

4条回答
  •  误落风尘
    2020-12-10 09:43

    I create one function to do this, works fine for me. i hope help.

    function ofuscaEmail($email, $domain_ = false){
    
        $seg = explode('@', $email);
        $user = '';
        $domain = '';
    
        if (strlen($seg[0]) > 3) {
            $sub_seg = str_split($seg[0]);
            $user .= $sub_seg[0].$sub_seg[1];
            for ($i=2; $i < count($sub_seg)-1; $i++) { 
                if ($sub_seg[$i] == '.') {
                    $user .= '.';
                }else if($sub_seg[$i] == '_'){
                    $user .= '_';
                }else{
                    $user .= '*';
                }
            }
            $user .= $sub_seg[count($sub_seg)-1];
        }else{
            $sub_seg = str_split($seg[0]);
            $user .= $sub_seg[0];
            for ($i=1; $i < count($sub_seg); $i++) { 
                $user .= ($sub_seg[$i] == '.') ? '.' : '*';
            }
        }
    
        $sub_seg2 = str_split($seg[1]);
        $domain .= $sub_seg2[0];
        for ($i=1; $i < count($sub_seg2)-2; $i++) { 
            $domain .= ($sub_seg2[$i] == '.') ? '.' : '*';
        }
    
        $domain .= $sub_seg2[count($sub_seg2)-2].$sub_seg2[count($sub_seg2)-1];
    
        return ($domain_ == false) ? $user.'@'.$seg[1] : $user.'@'.$domain ;
    
    }
    

提交回复
热议问题