PHP提取字符串中的手机号正则表达式怎么写
0.简介
PHP通过正则表达式提取字符串中的手机号并判断运营商,简单快速方便,能提取多个手机号。
1.代码
$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)isanumber,andtheanotherishere(09978625000),thephonenumberis18064074452and13899555555。这是中文,这里有个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提取字符串中的手机号正则表达式怎么写,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!