PHP提取字串中的手機號正規表示式怎麼寫

2022-09-27 04:09:13 字數 3022 閱讀 7796

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...