Как проверить номер телефона
Короткий ответ
Уберите всё, кроме цифр, и проверьте длину:
<?php
function isPhone(string $phone): bool
{
$digits = preg_replace('/\D/', '', $phone);
return strlen($digits) >= 10 && strlen($digits) <= 15;
}
var_dump(isPhone('+1 (202) 555-01-23'));
var_dump(isPhone('555-01'));Результат:
bool(true)
bool(false)Единый вид для хранения
В базе номер хранят только цифрами со знаком плюс:
<?php
echo '+' . preg_replace('/\D/', '', '+44 (20) 7946-0958');Результат:
+442079460958Не будьте слишком строги
Форматы номеров в разных странах различаются. Жёсткий шаблон отсеет настоящих пользователей; для точной проверки есть библиотека giggsey/libphonenumber-for-php.
Функции из этого ответа
- preg_match — Проверяет строку по регулярному выражению.
- preg_replace — Заменяет всё, что подошло под регулярное выражение.
- strlen — Возвращает длину строки в байтах.