[PHP]電話等機敏資料隱碼顯示

今天需要電話等機敏資料隱碼顯示,所以建立了一個function,方便以後可以使用。

replace_symbol(要處理的字串,取代成的字,前面顯示幾個字,後面顯示幾個字);

使用方式:
echo replace_symbol(“123456789”,’*’,3,3);

結果就會是 123***789


function replace_symbol($string, $symbol, $begin_num = 0, $end_num = 0) {
    $length = strlen($string);
    $begin_num = (int) $begin_num;
    $end_num = (int) $end_num;
    $str1 = substr( $string ,0, $begin_num );
    $str2 = substr( $string , -$end_num );
    $reduce_num = $length - $begin_num - $end_num;
    $str3 ="";

    for ($i = 0; $i <= $reduce_num; $i++) {
     $str3 .= $symbol;
    }

return $str1.$str3.$str2;
}

但是如果您想要用的是中文,那我們Function就必須改變一下了

因為substr對中文切割,會把中文算是兩個字。

所以以下我們改用mb_substr


function replace_symbol($string, $symbol, $begin_num = 0, $end_num = 0) {
    $length = strlen($string);
    $begin_num = (int) $begin_num;
    $end_num = (int) $end_num;
    $str1 = mb_substr( $string ,0, $begin_num,"utf-8" );
    $str2 = mb_substr( $string , -$end_num,"utf-8" );
    $reduce_num = $length - $begin_num - $end_num;
    $str3 ="";

    for ($i = 0; $i <= $reduce_num; $i++) {
     $str3 .= $symbol;
    }

return $str1.$str3.$str2;
}

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *