Работа с мобильными номерами телефонов на PHP

2615 просмотров
Автор: Николай Ковалёв

Удаление лишних символов

Только цифры и плюс:

$cleared_phone = preg_replace('/[^0-9\+]+/', '', $phone);

Только цифры без плюса:

$cleared_phone = preg_replace('/[^0-9]+/', '', $phone);

Валидация

Валидация белорусского номера. Перед валидацией удаляем из номера лишний символы. Валидация реализована для очищенного номера со знаком плюс. Так же реализованы проверки кода мобильного оператора и количества символов в номере телефона.

if (substr($cleared_phone, 0, 4) == '+375') {
    $operators = [25, 29, 33, 44];

    // проверяем код оператора
    if (!in_array(substr($cleared_phone, 4, 2), $operators))
        $error = 'Неверный код оператора';

    // проверяем длину номера телефона
    if (strlen($cleared_phone) != 13)
        $error = 'Неверная длина номера';
}

Валидация российского номера. Перед валидацией удаляем из номера лишний символы. Валидация реализована для очищенного номера со знаком плюс. Реализована проверка количества символов в номере телефона.

if (substr($cleared_phone, 0, 2) == '+7') {
    // проверяем длину номера телефона
    if (strlen($cleared_phone) != 11)
        $error = 'Неверная длина номера';
}

Красивый вывод

Перед выводом удаляем из номера лишние символы.

Номера Беларуси: +375 XX XXX-XX-XX
Номера РФ: +7 XXX XXX-XX-XX

if (substr($cleared_phone, 0, 4) == '+375') {
    return '+375 ' . substr($cleared_phone, 4, 2) . ' ' . substr($cleared_phone, 6, 3) . '-' . substr($cleared_phone, 9, 2) . '-' . substr($cleared_phone, 11, 2);
} elseif (substr($cleared_phone, 0, 2) == '+7') {
    return '+7 ' . substr($cleared_phone, 2, 3) . ' ' . substr($cleared_phone, 5, 3) . '-' . substr($cleared_phone, 8, 2) . '-' . substr($cleared_phone, 10, 2);
} else {
    return $cleared_phone;
}
5.00 2 голоса
Отображение цен:
BYN RUB