PHP: нормализация номера телефона
Задача: на входе строка, которая может содержать номер, или номер + какие то комментарии к нему. Необходимо нормализовать номер, что бы были только цифры.
Решение:
Сначала напишем функцию проверки наличия букв в строке:
function LeetterYet($mobile){
$yet=false;
if (preg_match('/[а-яё]/iu', $mobile)) {$yet=true;}; // символ ё, отдельно проверяем
if (preg_match('/[a-zA-Z]/', $mobile)) {$yet=true;}; // английский алфавит
if (preg_match('/[^a-zA-Z\d]/', $mobile)) {$yet=true;}; // специальные символы
return $yet;
}
Далее, если есть буквы, то удалим их, и ограничим длинну поля 11 символами..
function NormalizeMobile($mobile){
$mobile=preg_replace('/[^0-9]/', '', $mobile);
$mobile = substr($mobile, 0,11);
return $mobile;
};
И общий результат:
$mobile=$res->result->mobile;
if (LeetterYet($mobile)==false){
$mobile= NormalizeMobile($mobile);
};