對手機號加星號處理

項目中經常需要公佈一些用戶的信息,比如抽獎結果展示,排行榜等。但是很多涉及到用戶隱私,比如暱稱,姓名,手機號等,這時候就要對用戶敏感信息做處理,最常見的就是對手機號加星號處理。方法也非常簡單,簡單到我再寫這篇之前都在考慮要不要發出來。不過還是簡單分享一下,如果有兄弟用得上至少可以節省一點時間。

/**
 * 字符串加指定符號處理
 * @param string $str 源字符串
 * @param int $start 開頭保留長度
 * @param int $end 結尾保留長度
 * @param string $symbol 指定符號
 * @param bool $fullSymbol 是否全處理成指定符號
 * @return string
 */
function secretStr($str, $start = 1 ,$end = 1, $symbol = '*', $fullSymbol = false){
    $str = trim($str);
    $symbol = trim($symbol);
    if (empty($str)){
        return '';
    }
    if(empty($symbol)) $symbol = '*';
    if($start < 0) $start = 1;
    if($end < 0) $end = 1;
    //mb_strlen — 輸入字符串總長度
    $strlen = mb_strlen($str, 'utf-8');
    //要保留的開頭和結尾的總長度
    $numLen = $start + $end;
    if($numLen >= $strlen){
        return $str;
    }
    if ($fullSymbol) {
        //如果全處理成指定符號
        return str_repeat($symbol, $strlen);
    } else {
        //mb_substr — 獲取要保留的開頭和結尾字符
        $firstStr = mb_substr($str, 0, $start, 'utf-8');
        $lastStr = mb_substr($str, -1 * $end, $end, 'utf-8');
        //str_repeat — 重複一個字符串
        return $firstStr . str_repeat($symbol, $strlen - $numLen) . $lastStr;
    }
}

當然了不單單可以處理手機號,其他字符串也是可以的。

echo secretStr('13800138000');                //1*********0
echo secretStr('13800138000',3,4);            //138****8000
echo secretStr('13800138000',3,4,'#');        //138####8000
echo secretStr('13800138000',3,4,'*',true);   //***********
echo secretStr('abcdef',1,2);                 //a***ef
echo secretStr('江南極客');                   //江**客

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章