全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

PHP提取字符串中的手机号正则表达式怎么写

0. 简介

PHP通过正则表达式提取字符串中的手机号并判断运营商,简单快速方便,能提取多个手机号。

1. 代码

<?php
header("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';//匹配数字的正则表达式
  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';//匹配数字的正则表达式
  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';//匹配数字的正则表达式
  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 可能是没有区号的固定电话

以上所述是小编给大家介绍的PHP提取字符串中的手机号正则表达式怎么写,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# php提取字符串中的手机号  # php  # 提取字符串中的数字  # 提取数字正则表达式  # java使用正则表达式判断手机号的方法示例  # 正则表达式验证用户名、密码、手机号码、身份证(推荐)  # Android 正则表达式验证手机号、姓名(包含少数民族)、身份证号  # iOS 正则表达式判断手机号码、固话  # JS正则表达式验证账号、手机号、电话和邮箱是否合法  # 一个容易犯错的js手机号码验证正则表达式(推荐)  # Android判断11位手机号码的方法(正则表达式)  # Android 2018最新手机号验证正则表达式方法  # 固定电话  # 中国电信  # 中国联通  # 这是  # 正则表达式  # 还有一个  # 小编  # 有个  # 又是  # 多个  # 有可能  # 在此  # 给大家  # 所述  # 给我留言  # 感谢大家  # 为空  # 七位  # 疑问请  # 有任何 


相关文章: 高端建站如何打造兼具美学与转化的品牌官网?  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  如何设置并定期更换建站之星安全管理员密码?  建站之星安装模板失败:服务器环境不兼容?  油猴 教程,油猴搜脚本为什么会网页无法显示?  如何续费美橙建站之星域名及服务?  Swift中swift中的switch 语句  营销式网站制作方案,销售哪个网站招聘效果最好?  如何通过cPanel快速搭建网站?  如何用好域名打造高点击率的自主建站?  江苏网站制作公司有哪些,江苏书法考级官方网站?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  建站之星代理费用多少?最新价格详情介绍  一键网站制作软件,义乌购一件代发流程?  已有域名如何免费搭建网站?  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  如何高效生成建站之星成品网站源码?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  微信小程序 input输入框控件详解及实例(多种示例)  如何在云主机上快速搭建网站?  教程网站设计制作软件,怎么创建自己的一个网站?  孙琪峥织梦建站教程如何优化数据库安全?  教学网站制作软件,学习*后期制作的网站有哪些?  淘宝制作网站有哪些,淘宝网官网主页?  香港服务器网站推广:SEO优化与外贸独立站搭建策略  javascript基本数据类型及类型检测常用方法小结  兔展官网 在线制作,怎样制作微信请帖?  如何通过云梦建站系统实现SEO快速优化?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  如何选择高性价比服务器搭建个人网站?  建站之星如何取消后台验证码生成?  建站之星北京办公室:智能建站系统与小程序生成方案解析  贸易公司网站制作流程,出口贸易网站设计怎么做?  免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?  免费视频制作网站,更新又快又好的免费电影网站?  如何在万网开始建站?分步指南解析  建站之星如何配置系统实现高效建站?  网站设计制作公司地址,网站建设比较好的公司都有哪些?  制作网站怎么制作,*游戏网站怎么搭建?  微信推文制作网站有哪些,怎么做微信推文,急?  建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析  建站之星安全性能如何?防护体系能否抵御黑客入侵?  已有域名建站全流程解析:网站搭建步骤与建站工具选择  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  浅析上传头像示例及其注意事项 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。