我仍然试图在PHP中使用preg_replace函数.如何将以下手机号码格式化为标准27xxxxxxxxx手机号码?
例如:
083-123-4678应为27831234567
278312345678应该是27831234567
起始编号必须为081,082,083,084或071,072,073,074
解决方法:
function Number_SA($numbers)
{
$number = preg_replace(array('~[^0-9]~', '~^27~'), '', $numbers);
if (preg_match('~^(?:07[1234])~', $number) > 0)
{
$output= sprintf('%d%s', 27, $number);if ((strlen($output) < 12)| (strlen($output) > 13)){ return false;}
else{return $output;}
}
elseif (preg_match('~^(?:08[123458])~', $number) > 0)
{
$output= sprintf('%d%s', 27, $number);if ((strlen($output) < 12)| (strlen($output) > 13)){ return false;}
else{return $output;}
}
elseif (preg_match('~^(?:01[123468])~', $number) > 0)
{
$output= sprintf('%d%s', 27, $number);
if ((strlen($output) < 12)| (strlen($output) > 13)){ return false;}
else{return $output;}
}
elseif (preg_match('~^(?:02[1])~', $number) > 0)
{
$output= sprintf('%d%s', 27, $number);
if ((strlen($output) < 12)| (strlen($output) > 13)){ return false;}
else{return $output;}
}
elseif (preg_match('~^(?:03[1])~', $number) > 0)
{
$output= sprintf('%d%s', 27, $number);
if ((strlen($output) < 12)| (strlen($output) > 13)){ return false;}
else{return $output;}
}
elseif (preg_match('~^(?:04[0134])~', $number) > 0)
{
$output= sprintf('%d%s', 27, $number);
if ((strlen($output) < 12)| (strlen($output) > 13)){ return false;}
else{return $output;}
}
elseif (preg_match('~^(?:05[17])~', $number) > 0)
{
$output= sprintf('%d%s', 27, $number);
if ((strlen($output) < 12)| (strlen($output) > 13)){ return false;}
else{return $output;}
}
else{return false;}
return false;
}
$phoneno=array();
array_push($phoneno,(Number_SA('083-313-2605'))); //true
array_push($phoneno,(Number_SA('067-313-26055')));//false
array_push($phoneno,(Number_SA('021-313-260'))); //false
array_push($phoneno,(Number_SA('0211-313-8903')));//true
foreach ($phoneno as $number){
if($number == ""){ echo "Phone Number is null"."
";}
else{ echo "This is valid: ".$number."
";}}
标签:php,regex,mobile
来源: https://codeday.me/bug/20190630/1340479.html