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

2022-07-31 11:12:13 字數 3266 閱讀 4612

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