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小时内与您取得联系。