3v4l.org

run code in 300+ PHP versions simultaneously
<?php $x = [ '797734809', '0797734809', '27797734809', '0027797734809', '+27797734809', ]; function formatPhoneNo($no) { switch (true) { case (preg_match('#^7\d{8}$#', $no)): $no = '+27' . $no; break; case (preg_match('#^07\d{8}$#', $no)): $no = '+27' . substr($no, 1); break; case (preg_match('#^277\d{8}$#', $no)): $no = '+' . $no; break; case (preg_match('#^00277\d{8}$#', $no)): $no = '+' . substr($no, 2); break; case (preg_match('#^\+277\d{8}$#', $no)): break; default: throw new InvalidArgumentException('Invalid format supplied'); break; } return $no; } foreach ($x as $y) { echo formatPhoneNo($y) . "\n"; }

preferences:
30.3 ms | 405 KiB | 5 Q