- substr: documentation ( source)
- is_numeric: documentation ( source)
- in_array: documentation ( source)
- str_split: documentation ( source)
<?php
function ReformatPhoneNumber($number)
{
if (!IsValidNumber($number)) {
throw new \Exception('Invalid phone number');
}
echo $number;
}
function IsValidNumber($number)
{
$validChars = array(' ', '-');
if (!is_numeric(substr($number, 0, 1))
|| !is_numeric(substr($number, strlen($number) - 1, 1))
) {
return false;
}
$delimiterFlag = false;
foreach (str_split($number) as $digit) {
if (!is_numeric($digit) && !in_array($digit, $validChars)) {
return false;
}
if (in_array($digit, $validChars)) {
if ($delimiterFlag) {
return false;
}
$delimiterFlag = true;
} else {
$delimiterFlag = false;
}
}
return true;
}
echo ReformatPhoneNumber('012-345 69');