South African Mobile Number Formatting

I'm still trying to figure out the preg_replace function in PHP. How to format the following mobile numbers to a standard number 27xxxxxxxxx for mobile numbers?

For instance:

083-123-4678 should be 27831234567 +278312345678 should be 27831234567

Starting numbers must be either 081, 082, 083, 084, or 071, 072, 073, 074

+4
source share
2 answers
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"."<br/>";} else{ echo "This is valid: ".$number."<br/>";}} 
+2
source

This should do it:

 function Number_SA($number) { $number = preg_replace(array('~[^0-9]~', '~^27~'), '', $number); if (preg_match('~^(?:07[1234]|08[1234])~', $number) > 0) { return sprintf('%d%s', 27, $number); } return false; } 

Using:

 var_dump(Number_SA('083-123-4678')); // 27831234567 var_dump(Number_SA('085-123-4678')); // false var_dump(Number_SA('+278312345678')); // false (doesn't start with 083) 
+1
source

Source: https://habr.com/ru/post/1335730/


All Articles