- substr: documentation ( source)
- preg_replace: documentation ( source)
<?php
function format($src, $format = '+d (ddd) ddd-dd-dd') {
$digits = preg_replace('/\D/', '', $src); // Оставляем только цифры
$res = '';
for($i = 0; $i < strlen($format); $i++) {
$letter = $format[$i];
if (!$digits) { // Не хватило цифр
$res .= $letter;
continue;
}
switch ($letter) {
case 'd': // Цифра
$res .= $digits[0];
$digits = substr($digits, 1);
break;
default: $res .= $letter;
}
}
return $res;
}
$data = [
'+7(999)999-99-99',
'79998887766',
'799988877', // недостаточно цифр для формата
];
foreach ($data as $phoneSrc) {
echo format($phoneSrc)."\n";
}