PHP實現提取字串中的手機號Regex的方法

來源:互聯網
上載者:User
PHP通過Regex提取字串中的手機號並判斷電訊廠商,簡單快速方便,能提取多個手機號。下面通過本文執行個體代碼給大家詳細介紹,需要的的朋友參考下吧

0. 簡介

PHP通過Regex提取字串中的手機號並判斷電訊廠商,簡單快速方便,能提取多個手機號。

1. 代碼

<?phpheader("content-type:text/plain;charset=utf-8");function findThePhoneNumbers($oldStr = ""){  // 檢測字串是否為空白  $oldStr=trim($oldStr);  $numbers = array();  if(empty($oldStr)){    return $numbers;  }  // 刪除86-180640741122,0997-8611222之類的號碼中間的減號(-)  $strArr = explode("-", $oldStr);  $newStr = $strArr[0];  for ($i=1; $i < count($strArr); $i++) {     if (preg_match("/\d{2}$/", $newStr) && preg_match("/^\d{11}/", $strArr[$i])){      $newStr .= $strArr[$i];     } elseif (preg_match("/\d{3,4}$/", $newStr) && preg_match("/^\d{7,8}/", $strArr[$i])) {      $newStr .= $strArr[$i];     } else {      $newStr .= "-".$strArr[$i];     }   }  // 手機號的擷取  $reg='/\D(?:86)?(\d{11})\D/is';//匹配數位Regex  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{7}$/";  // * 中國聯通:China Unicom  // * 130,131,132,152,155,156,185,186  $cu = "/^1(3[0-2]|5[256]|8[56])\d{8}$/";  // * 中國電信:China Telecom  // * 133,1349,153,180,189  $ct = "/^1((33|53|8[09])[0-9]|349)\d{7}$/";  //  foreach ($result[1] as $key => $value) {    if(preg_match($cm,$value)){      $nums[] = array("number" => $value, "type" => "中國移動");    }elseif(preg_match($cu,$value)){      $nums[] = array("number" => $value, "type" => "中國聯通");    }elseif(preg_match($ct,$value)){      $nums[] = array("number" => $value, "type" => "中國電信");    }else{      // 非法號碼    }  }  $numbers["mobile"] = $nums;  // 固定電話或小靈通的擷取  $reg='/\D(0\d{10,12})\D/is';//匹配數位Regex  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{3})\d{7,8}$/";  foreach ($result[1] as $key => $value) {    if(preg_match($phs, $value)){      $nums[] = array("number" => $value, "type" => "固定電話或小靈通");    } else {      // 非法    }  }  $numbers["landline"] = $nums;  // 有可能是沒有區號的固定電話的擷取  $reg='/\D(\d{7,8})\D/is';//匹配數位Regex  preg_match_all($reg,$newStr,$result);  $nums = array();  foreach ($result[1] as $key => $value) {    $nums[] = array("number" => $value, "type" => "沒有區號的固定電話");  }  $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 可能是沒有區號的固定電話

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.