Часто приходится проверять номер телефона не только на стороне клиента, но и на сторон сервера. Так как же это сделать, используя PHP?

function validate_phone_number($phone){
$filtered_phone_number = filter_var($phone, FILTER_SANITIZE_NUMBER_INT);/*Удаляет все символы, кроме цифр и знаков плюса и минуса*/
$phone_to_check = str_replace("-", "", $filtered_phone_number);
if(iconv_strlen($phone,'UTF-8')!=preg_match_all("/[^A-Za-zА-Яа-яёЁ]/", $phone)){/*проверим, совпадают ли по количеству символом строка чистая и очищенная от букв*/
return false;
}
if(strlen($phone_to_check) < 10 || strlen($phone_to_check) > 20) {/*если НЕ меньше 10 символов и не больше 20*/
return false;
} else {
return true;
}
}
$phone='+380662222222';
if(validate_phone_number($phone) == false){/*сообщение, что номер телефона неверный*/
echo json_encode(array('errmsg'=>"Проверьте телефон «{$phone}», он НЕ должен содержать буквы."));
exit;
}else{
echo 'Номер телефона корректен';
}

Хочется отметить, что такую проверку пройдут номера типа:

  • 0509605874
  • +38 066 2222222
  • +38 (066) 222-22-22
  • 0000000000

... и другие номера, которые НЕ содержат букв.