PHP 匹配電話,手機,400號碼 函式 及正則。很管用。
阿新 • • 發佈:2019-02-12
PHP 匹配電話格式是否正確,自己寫的。
1,如果是電話,那麼區號和電話之間必須有橫槓,並且必須有區號
2,如果是手機,可以支援手機前帶上“+86”、“86”、“86-”、“+86-”字首
3,電話只能匹配中國大陸的。02開頭共三位,01開頭的只允許010北京的號
4,支援電話分機號碼,020-89571800-1,020-89571800-125。
5,400電話支援
<?php function isTel($tel,$type='') { $regxArr = array( 'sj' => '/^(\+?86-?)?(18|15|13)[0-9]{9}$/', 'tel' => '/^(010|02\d{1}|0[3-9]\d{2})-\d{7,9}(-\d+)?$/', '400' => '/^400(-\d{3,4}){2}$/', ); if($type && isset($regxArr[$type])) { return preg_match($regxArr[$type], $tel) ? true:false; } foreach($regxArr as $regx) { if(preg_match($regx, $tel )) { return true; } } return false; } $tm1 = microtime(true); $arr = array( '15910241024', '+861591900 0000', '86159 1930 9100', '+86-15312001200', '18655321002', '02089571800', '020-89571800', '0755-102410240', '0553-10241024', '010-1204120140', '010-120412014', '110-89571800', '022-102410240', '0222-102410241', '400-020-9800', '400-0588-010', '400-0211-0112', ); foreach ($arr as $tel) { echo "\n{$tel}:\t".(isTel($tel) ? "是":"錯誤"); } echo sprintf("\n\ntaken %.6f s",microtime(true)-$tm1);
測試結果:
X-Powered-By: PHP/5.2.0 Content-type: text/html 15910241024: 是 +861591900 0000: 錯誤 86159 1930 9100: 錯誤 +86-15312001200: 是 18655321002: 是 02089571800: 錯誤 020-89571800: 是 0755-102410240: 是 0553-10241024: 是 010-1204120140: 錯誤 010-120412014: 是 110-89571800: 錯誤 022-102410240: 是 0222-102410241: 錯誤 400-020-9800: 是 400-0588-010: 是 400-0211-0112: 是 taken 0.002274 s