PHP提取字符串中的手机号正则表达式怎么写
发布时间 - 2026-01-11 02:22:19 点击率:次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最新手机号验证正则表达式方法
# 固定电话
# 中国电信
# 中国联通
# 这是
# 正则表达式
# 还有一个
# 小编
# 有个
# 又是
# 多个
# 有可能
# 在此
# 给大家
# 所述
# 给我留言
# 感谢大家
# 为空
# 七位
# 疑问请
# 有任何
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何处理文件下载请求?(Response示例)
济南网站建设制作公司,室内设计网站一般都有哪些功能?
googleplay官方入口在哪里_Google Play官方商店快速入口指南
如何快速搭建二级域名独立网站?
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
Laravel如何实现本地化和多语言支持?(i18n教程)
Python高阶函数应用_函数作为参数说明【指导】
公司网站制作需要多少钱,找人做公司网站需要多少钱?
Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)
悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件
Laravel如何使用模型观察者?(Observer代码示例)
如何用5美元大硬盘VPS安全高效搭建个人网站?
高端网站建设与定制开发一站式解决方案 中企动力
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲
Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】
Bootstrap CSS布局之列表
谷歌Google入口永久地址_Google搜索引擎官网首页永久入口
如何用JavaScript实现文本编辑器_光标和选区怎么处理
Python3.6正式版新特性预览
Laravel怎么调用外部API_Laravel Http Client客户端使用
Android中AutoCompleteTextView自动提示
Laravel如何自定义分页视图?(Pagination示例)
打开php文件提示内存不足_怎么调整php内存限制【解决方案】
网站制作报价单模板图片,小松挖机官方网站报价?
奇安信“盘古石”团队突破 iOS 26.1 提权
php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】
laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法
Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】
如何快速搭建高效WAP手机网站吸引移动用户?
Java类加载基本过程详细介绍
标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南
WordPress 子目录安装中正确处理脚本路径的完整指南
如何确保FTP站点访问权限与数据传输安全?
详解jQuery中的事件
Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
如何彻底删除建站之星生成的Banner?
Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境
Laravel Seeder填充数据教程_Laravel模型工厂Factory使用
Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】
jquery插件bootstrapValidator表单验证详解
Laravel Docker环境搭建教程_Laravel Sail使用指南
大学网站设计制作软件有哪些,如何将网站制作成自己app?
EditPlus中的正则表达式 实战(4)
海南网站制作公司有哪些,海口网是哪家的?
Laravel如何实现多对多模型关联?(Eloquent教程)

