Нормализация номера телефона (normalize_phone)

Эта функция приводит телефонный номер к стандартному виду: убирает лишние символы, добавляет нужный префикс для российских номеров и возвращает очищенное значение.

normalize_phone

Функция приводит телефон к «нормализованному» виду: удаляет пробелы, скобки, дефисы и другие лишние символы, корректно обрабатывает российские номера, начинающиеся с 8 или 7, и возвращает строку с номером.

Формат записи:

[normalize_phone]номер телефона[/normalize_phone]

Пример:

[normalize_phone]+7 (999) 123-45-67[/normalize_phone]

Результат:

+79991234567

Аргументы

Функция принимает 1 аргумент:

  1. Телефон (обязательный) Любое значение, которое можно интерпретировать как телефонный номер. Допустимо передавать:

    • Строку: +7 (999) 123-45-67

    • Число: 89991234567

    • Значение из переменной: [normalize_phone]{{phone}}[/normalize_phone]

    Дополнительные правила для российских номеров:

    • Если номер начинается с 8, то первая цифра заменяется на 7. Пример: 8 (999) 123-45-67+79991234567

    • Если номер начинается с 7 (и без +), добавляется + в начало. Пример: 79991234567+79991234567

    • Если номер уже в формате +7..., он остаётся в этом формате (очищаются только разделители).

    Для номеров с другими кодами стран:

    • Если номер начинается с + и содержит код другой страны - он просто очищается от лишних символов. Пример: +49 (176) 123-45-67+491761234567

    • Если номер начинается не с 7 или 8 и без +, он только очищается. Пример: 380 99 123 45 67380991234567


Особенности работы

  • Если передано некорректное значение - вернется пустая строка, в целях совместимости с интеграциями, которые ожидают получение корректного номера

  • Значения вроде "123" считаются корректными номерами, валидация значений не входит в зону ответственности данной функции

Примеры использования

Вход
Результат
Комментарий

[normalize_phone]+7 (999) 123-45-67[/normalize_phone]

+79991234567

Уже корректный номер, удалены только разделители

[normalize_phone]8 999 123-45-67[/normalize_phone]

+79991234567

8 заменена на 7, добавлен +

[normalize_phone]89991234567[/normalize_phone]

+79991234567

Числовой ввод, привели к формату +7...

[normalize_phone]79991234567[/normalize_phone]

+79991234567

Номер начинался с 7, добавлен +

[normalize_phone]+49 (176) 123-45-67[/normalize_phone]

+491761234567

Иностранный номер, просто очищен

[normalize_phone]380 99 123 45 67[/normalize_phone]

380991234567

Не российский код, только очищен

[normalize_phone]тут нет телефона[/normalize_phone]

""

Не удаётся выделить цифры → пустая строка

[normalize_phone][/normalize_phone]

""

Пустое значение

Последнее обновление

Это было полезно?