1. 程式人生 > >PHP 只保留字串首尾字元/隱藏部分字串

PHP 只保留字串首尾字元/隱藏部分字串

  • 整理提供兩個PHP函式,用於字串的隱藏效果

①. 隱藏部分字串

/**
* 隱藏部分字串
* # 此方法多用於手機號碼或身份證號、銀行卡號的中間部分數字的隱藏
*/
function func_substr_replace($str, $replacement = '*', $start = 1, $length = 3)
{
    $len = mb_strlen($str,'utf-8');
    if ($len > intval($start+$length)) {
        $str1 = mb_substr($str,0,$start,'utf-8');
        $str2
= mb_substr($str,intval($start+$length),NULL,'utf-8'); } else { $str1 = mb_substr($str,0,1,'utf-8'); $str2 = mb_substr($str,$len-1,1,'utf-8'); $length = $len - 2; } $new_str = $str1; for ($i = 0; $i < $length; $i++) { $new_str .= $replacement; } $new_str
.= $str2; return $new_str; }

②. 隱藏部分字串

/**
 * 只保留字串首尾字元,隱藏中間用*代替(兩個字元時只顯示第一個)
 * @param string $user_name 姓名
 * @return string 格式化後的姓名
 */
function substr_cut($user_name){
    $strlen     = mb_strlen($user_name, 'utf-8');
    $firstStr     = mb_substr($user_name, 0, 1, 'utf-8');
    $lastStr     = mb_substr($user_name
, -1, 1, 'utf-8'); return $strlen == 2 ? $firstStr . str_repeat('*', mb_strlen($user_name, 'utf-8') - 1) : $firstStr . str_repeat("*", $strlen - 2) . $lastStr; }