# PHP正則如何實現替換電話
在Web開發中,經常需要對用戶輸入的電話號碼進行格式化或脫敏處理。PHP的正則表達式(PCRE)提供了強大的字符串替換功能,本文將介紹三種常見的電話號碼替換場景及實現方法。
## 一、基礎電話號碼替換
使用`preg_replace()`函數可以實現簡單的號碼替換:
```php
$phone = "聯系電話:13812345678";
$pattern = '/1[3-9]\d{9}/'; // 匹配11位手機號
$replacement = '***';
$result = preg_replace($pattern, $replacement, $phone);
// 輸出:聯系電話:***
通過捕獲組實現保留前3后4位:
$pattern = '/(1[3-9]\d{2})\d{4}(\d{2})/';
$replacement = '$1****$2';
$result = preg_replace($pattern, $replacement, "13812345678");
// 輸出:138****5678
對于包含分隔符的號碼(如010-87654321):
$pattern = '/(\d{3,4})-?(\d{4})-?(\d{4})/';
$replacement = '$1-$2-****';
$result = preg_replace($pattern, $replacement, "010-8765-4321");
// 輸出:010-8765-****
匹配帶國際區號的號碼(如+86 13812345678):
$pattern = '/\+(\d{1,3})\s(1[3-9]\d{9})/';
$replacement = '+$1 *******';
$result = preg_replace($pattern, $replacement, "+86 13812345678");
// 輸出:+86 *******
^
和$
邊界符preg_replace_callback()
實現復雜邏輯function maskPhone($phone) {
$patterns = [
'/1[3-9]\d{2}(\d{4})\d{2}/' => '1***$1**',
'/(\d{3})-(\d{4})-(\d{4})/' => '$1-$2-****'
];
foreach ($patterns as $pattern => $replacement) {
if (preg_match($pattern, $phone)) {
return preg_replace($pattern, $replacement, $phone);
}
}
return substr($phone, 0, 3) . '****' . substr($phone, -2);
}
通過合理設計正則表達式,可以滿足絕大多數電話號碼處理需求。實際應用中應根據具體業務場景調整匹配規則。 “`
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。