Email 驗證
function is_email($email) {
return strlen($email) > 6 && preg_match('/^[\w.-]+@[\w-]+(\.\w+)+$/', $email);
}
URL 驗證
function is_url($str) {
return preg_match('/^https?:\/\/[A-Za-z0-9.-]+\.[A-Za-z]{2,}([\/?#][^\s]*)?$/i', $str);
}
手機號碼驗證(中國大陸)
function is_mobile($str) {
// 支援 13/14/15/17/18/19 開頭,共 11 位
return preg_match('/^1[3-9]\d{9}$/', $str);
}
進階:分段驗證運營商
function mobile_carrier($mobile) {
if (!preg_match('/^1[3-9]\d{9}$/', $mobile)) return false;
$prefix = substr($mobile, 0, 3);
$map = [
'134','135','136','137','138','139','147','150','151','152','157','158','159','178','182','183','184','187','188','198' => '移動',
'130','131','132','145','155','156','175','176','185','186','166' => '聯通',
'133','149','153','173','177','180','181','189','199' => '電信',
'170','171','172','174' => '虛擬運營商',
];
foreach ($map as $prefixes => $carrier) {
if (in_array($prefix, explode(',', $prefixes))) return $carrier;
}
return '未知';
}
使用提醒
- 正則僅做格式檢查,真實性需發送驗證碼確認
- 號段持續更新,建議封裝為可熱更新的配置或服務
- 國際手機號請採用
libphonenumber 函式庫