0. 簡介
php通過正規表示式提取字串中的手機號並判斷運營商,簡單快速方便,能提取多個手機號。
1. **
<?php header("content-type:text/plain;charset=utf-8");
function findthephonenumbers($oldstr = "")
// 刪除86-180640741122,0997-8611222之類的號碼中間的減號(-)
$strarr = explode("-", $oldstr);
$newstr = $strarr[0];
for ($i=1; $i < count($strarr); $i++) $/", $newstr) && preg_match("/^\d/", $strarr[$i])) elseif (preg_match("/\d$/", $newstr) && preg_match("/^\d/", $strarr[$i])) else程式設計客棧
} // 手機號的獲取
$reg='/\d(?:86)?(\d)\d/is';//匹配數字的正規表示式
preg_match_all($reg,$newstr,$result);
$nums = array();
// * 中國移動:china mobile
// * 134[0-8],135,136,137,138,139,150,151,157www.cppcns.com,158,159,182,187,188
$cm = "/^1(34[0-8]|(3[5-9]|5[017-9]|8[278])\d)\d$/";
// * 中國聯通:china unicom
// * 130,131,132,152,155,156,185,186
$cu = "/^1(3[0-2]|5[256]|8[56])\d$/";
// * 中國電信:china telecom
// * 133,1349,153,180,189
$ct = "/^1((33|53|8[09])[0-9]|349)\d$/";
//foreach ($result[1] as $key => $value) elseif(preg_match($cu,$value))elseif(preg_match($ct,$value))else
} $numbers["mobile"] = $nums;
// 固定**或小靈通的獲取
$reg='/\d(0\d)\d/is';//匹配數字的正規表示式
preg_match_all($reg,$newstr,$result);
$nums = array();
// * 大陸地區固定**或小靈通
// * 區號:010,020,021,022,023,024,025,027,028,029
// * 號碼:七位或八位
$phs = "/^0(10|2[0-5789]|\d)\d$/";
foreach ($result[1] as $key => $value) else
} $numbers["landline"] = $nums;
// 有可能是沒有區號的固定**的獲取
$reg='/\d(\d)\d/is';//匹配數字的正規表示式
preg_match_all($reg,$newstr,$result);
$nums = array();
foreach ($result[1] as $key => $value)
$numbers["possible"] = $nums;
// 返回最終陣列
return $numbers;
}// 測試資料
$str = "this(8625010) is a num程式設計客棧ber, and the another is here(09978625000) ,the phone number is 18064074452 and 13899555555。這是中文,這裡有個1323的手機號,還有乙個188779988441這是12位8613322114455的。這裡又是乙個手機號86-18064074455。還有乙個區號分開寫的0997-8625001hahaha";
$nums = findthephonenumbers($str);
print_r($nums);
2. 測試結果
array
( [mobile] => array
([0] => array
([number] => 18064074452
[type] => 中國電信
)[1] => array
([number] => 13899555555
[type] => 中國移動
)[2] => array
([number] => 13239323232
[type] => 中國聯通
)[3] => array
([number] => 13322114455
[type] => 中國電信
)[4] => array
([number] => 18064074455
[type] =&www.cppcns.comgt; 中國電信))
[landline] => array
([0] => array
([number] => 09978625000
[type] => 固定**或小靈通
)[1] => array
([number] => 09978625001
[type] => 固定**或小靈通))
[possible] => array
([0] => array
([number] => 8625010
[type] => 沒有區號的固定**))
)3. 結果解析
mobile 移動**號碼
landline 固定**或者小靈通
possible 可能是沒有區號的固定**
本文標題: php提取字串中的手機號正規表示式怎麼寫
本文位址:
PHP提取字串中的手機號正規表示式怎麼寫
0.簡介 php通過正規表示式提取字串中的手機號並判斷運營商,簡單快速方便,能提取多個手機號。1.header content type text plain charset utf 8 function findthephonenumbers oldstr 刪除86 180640741122,09...
php 提取字串中指定內容及將手機號內容替換
1 提取字串中指定之間的內容,並將手機號 身份證等敏感資訊替換為 php程式 str msg 1.4 n 18 basemsgid 0 from 121279488 from sub 0 is muti msg 0 is redirecting 0 method tmsg request msgid...
正規表示式提取字串中的手機號碼
1.正規表示式提取思路 1.先提取出來11位的數字組合 2.再判斷這11位的數字組合是否符合要求 2.要用到的正規表示式功能 a.match 用於提取 裡面的符合a要求的數 b.test 用於判斷 裡是否符合b要求的數 符合返回true 不符合返回flase 內容 先定義乙個字串 var strin...