1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > PHP获取手机号码的正则表达式写法

PHP获取手机号码的正则表达式写法

时间:2021-03-19 17:14:30

相关推荐

PHP获取手机号码的正则表达式写法

后端开发|php教程

手机号码,表达式,php

后端开发-php教程

PHP通过正则表达式提取字符串中的手机号并判断运营商,简单快速方便,能提取多个手机号。下面通过本文实例代码给大家详细介绍,需要的的朋友参考下吧

商城网站营销系统源码,vscode数据库接口服务,ubuntu帖吧,安卓手机搭建tomcat,APP爬虫解析,php 执行外部程序,静海专业seo优化费用lzw

0. 简介

投投票 源码,vscode底部工具栏,ubuntu设置网络,tomcat开网址乱码,shaowsock爬虫代理,php 水印 缩放,梁平区seo优化诚信经营,3d网站美女特效代码,杰奇手机模板安装跳转教程lzw

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

ethtool 源码,vscode常用类名提示,ubuntu用pppoe,tomcat配置内存增大,爬虫uvb辐射,php 神经网络,seo有话要学会什么,asp网站源码文件管理,漂亮帝国会员中心模板lzw

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 $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 可能是没有区号的固定电话

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。