PHP 隱藏手機號碼中間4位

qiuqiumade發表於2021-02-18

今天突然想起手機號,這種隱私資訊在專案中還是隱藏一下比較好,所以就來總結一下能用的方法,僅限於大陸的11位手機號

方法演示

  1. 使用 substr_replace函式

    # substr_replace — 替換字串的子串
    # 使用說明
    substr_replace ( mixed $string , mixed $replacement , mixed $start , mixed $length = ? ) : mixed
    # $string 資源字串
    # $replacement 替換字元
    # $start 替換開始位置,如果位負數的時候,將從末尾開始數
    # $length 需要替換的長度,如果為負數的時候,也是從$start開始位置替換
    # substr_replace() 在字串 string 的副本中將由 start 和可選的 length 引數限定的子字串使用 replacement 進行替換。
    # 示例
    $mobile = '18512341234';
    echo substr_replace($mobile, '****', 3, 4);         // 185****1234
    # 注意 字串的開始位置為0
    echo substr_replace($mobile, '****', -8, -4);    // 185****1234
  2. 使用正規表示式

    # preg_replace — 執行一個正規表示式的搜尋和替換
    # 使用說明
    preg_replace ( mixed $pattern , mixed $replacement , mixed $subject , int $limit = -1 , int &$count = ? ) : mixed
    # 搜尋 subject 中匹配 pattern 的部分,以 replacement 進行替換。
    
    # 示例
    $pattern = '/(\d{3})\d{4}(\d{4})/';
    $new_mobile = preg_replace($pattern, '$1****$2', $mobile);
    echo $new_mobile;
  3. 使用 substr函式

    # 函式說明
    substr ( string $string , int $start , int $length = ? ) : string
    # 返回字串 string 由 start 和 length 引數指定的子字串。   
    # 同 substr_replace 一樣,start也可以為負數的
    # 示例
    echo substr($mobile, 0,3) . '****' . substr($mobile, 7,4);
    echo substr($mobile, 0,3) . '****' . substr($mobile, -4,4);

總結

​ 方法有很多,多數情況是在情況選擇那種更加合適.

本作品採用《CC 協議》,轉載必須註明作者和本文連結
別問我八十年代的哪首歌

相關文章