0. 簡介
php通過正規表示式提取字串中的手機號並判斷運營商,簡單快速方便,能提取多個手機號。
1. **
<?phpheader(
"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,157,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 number, and the another is here(09978625000) ,the phone number is 18064074452 and 13899555555。這是中文,這裡有個13239323232的手機號,還有乙個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] =>中國電信))
[landline] =>array([
0] =>array
([number] => 09978625000
[type] =>固定**或小靈通)[
1] =>array
([number] => 09978625001
[type] =>固定**或小靈通))
[possible] =>array([
0] =>array
([number] => 8625010
[type] =>沒有區號的固定**))
)
3. 結果解析
mobile 移動**號碼landline 固定**或者小靈通
possible 可能是沒有區號的固定**
PHP提取字串中的手機號正規表示式怎麼寫
0.簡介 php通過正規表示式提取字串中的手機號並判斷運營商,簡單快速方便,能提取多個手機號。1.function findthephonenumbers oldstr 刪除86 180640741122,0997 8611222之類的號碼中間的減號 strarr explode oldstr ne...
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...