php 信息脱敏方法

 之前做项目需要信息脱敏做的一个处理方法,可以定义首尾及中间显示星号数量

​
function secret_str($str,$prefix = 4,$suffix =4,$max_star = 4){
    if(empty($str) || empty($max_star)) return $str;

    $strLen = strlen($str);
    if($prefix > 0 && $strLen <= $prefix) return $str;
    if($suffix > 0 && $strLen <= $suffix) return $str;

    if($strLen <= ($prefix + $suffix)){
        if($prefix > 0){
            $starNum = $strLen - $prefix;
            $star = str_repeat("*",$starNum);
            return substr($str,0,$prefix).$star;
        }else{
            $starNum = $strLen - $suffix;
            $star = str_repeat("*",$starNum);
            return $star.substr($str,$starNum);
        }
    }

    if($prefix > 0){
        $first = substr($str,0,$prefix);
    }else{
        $first = "";
    }
    if($suffix > 0){
        $end = substr($str,$strLen- $suffix);
    }else{
        $end = "";
    }

    $starNum = $strLen - $prefix - $suffix;
    $starNum = min($starNum,$max_star);
    $middle = str_repeat("*",$starNum);

    return $first.$middle.$end;
}


function secret_idnumber($idnumber){
    return secret_str($idnumber,2,2);
}
function secret_name($name){
    return secret_str($name,1,1);
}
function secret_phone($phone){
    return secret_str($phone,3,4);
}

​