首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 隱藏手機號碼中間四位數字的自訂函數實作

     編輯:PHP 相關知識

在顯示用戶手機號碼或電話號碼時,為保護隱私,常需將中間幾位數字以星號遮罩。本文提供兩種 PHP 實作方式,分別適用於手機號碼與市話號碼的遮罩需求。

方法一:正則表達式完整版

此函數可同時處理手機號碼與市話號碼,自動判斷格式並替換中間數字。

function hidtel($phone) {
    // 判斷是否為市話格式:02-12345678 或 037-1234567
    $isLandline = preg_match('/(0[0-9]{2,3}[-]?[2-9][0-9]{6,7}[-]?[0-9]?)/i', $phone);
    
    if ($isLandline) {
        // 市話:保留區碼與前幾碼,中間 3-4 碼替換為 ****
        return preg_replace('/(0[0-9]{2,3}[-]?[2-9])[0-9]{3,4}([0-9]{3}[-]?[0-9]?)/i', '$1****$2', $phone);
    } else {
        // 手機:保留前 3 碼與後 4 碼,中間 4 碼替換為 ****
        return preg_replace('/(1[358]{1}[0-9])[0-9]{4}([0-9]{4})/i', '$1****$2', $phone);
    }
}

方法二:簡易字串替換

若確定僅處理 11 碼手機號碼,可使用 substr_replace 直接替換,效能較佳。

$num = "13966778888";
$str = substr_replace($num, '****', 3, 4); // 從第 4 碼開始替換 4 個字元
// 結果:139****8888

測試範例

<?php
$phonenum = "13966778888";
echo hidtel($phonenum); // 輸出:139****8888
?>

適用情境比較

方法優點缺點適用場景
正則版支援市話與手機混合、格式彈性效能稍低、正則較複雜後台管理、資料匯出、格式不固定輸入
substr_replace程式碼簡潔、執行速度快僅限固定長度手機號碼前端顯示、API 回傳、高頻呼叫

建議根據實際業務需求選擇:若系統需兼容多種電話格式,使用方法一;若專門處理標準 11 碼手機號,方法二更輕量高效。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved