формат телефонных номеров

Формат E.123, что было под рукой(josm).
А так-то и пробел не учитывается, но лучше не менять всё на +7 XXX XXX-XX-XX.
База нужна для работы с её данными, а не глазками смотреть, да и конечный пользователь эти данные из базы в чистом виде не видит.
Встречается у нас и такое 8-723-32-3-23-00, 8-7232-57-85-80, набор идёт уже на 87233232300 и 87232578580 соответственно. :smiley:

Выставлять в базе по принятому в стране стандарту, если всё равно модем приводит к единому стандарту символов набора номера или модемный вариант сразу писать в базу?

8w7233232300

Я за вариант без пробелов и с +7 в начале.

По поводу +7 всё просто - проект международный, поэтому код страны в начале номера более чем оправдан.

Почему без пробелов:

  1. Лишний мусор в базе.
  2. Легкочитаемость - понятие субъективное: кому-то нужны пробелы, кто-то захочет дефисы (как справедливо выше заметили, они тоже разные бывают), кто-то префикс в скобки возьмёт. Чем больше вариативность, тем больше возможность напутать и вероятность войны правок в случае столкновения на одной территории мапперов с разными вкусами :slight_smile:
  3. Дефисы, имхо, - наследие времён, когда ещё не было мобильных, а городские номера друг другу диктовали и записывали ручкой в бумажную телефонную книгу. Тогда деление на группы помогало не ошибиться при диктовке.
  4. Отделять код от номера тоже нерационально. Во-первых, с ростом числа абонентов города переходят на более широкие планы адресации: внутригородской номер становится на одну цифру длиннее, а код - соответственно, на одну цифру короче. И что, всё в базе переделывать из-за этого? Во-вторых, если раньше для мобильных номеров первые 3 цифры идентифицировали оператора, то с принятием закона о возможности сохранения номера при смене оператора это тоже потеряло смысл.

Я пишу без пробелов и дефисов.

Если бы вы удосужились прочитать все комментарии, то поняли бы, что речь не о трёх цифрах, а о разделении дефисом, с конца по две.

Ух сколько слов ты знаешь. Только вот телефон у меня звонит:

ATD+7 999 123-45-67;
OK

Но вы не программист, иначе бы не писали такую чушь:

% echo ‘+7 9—99 1.23-4⁓5-67’ | perl -pe ‘s/[^+0-9]*//g’
+79991234567

Что и где он делит?

Андроед 8.1 показывает сырые данные из базы, если в базу записать +78121234567 то так будет отображаться.

OSMAND показывает сырые данные из базы, если в базу записать +78121234567 то так будет отображаться.

Вся магия происходит на стадии записи.

Ни одна программа не в состоянии понять разницу между +7 812 123-45-67 и +7 8121 23-45-67 если они будут записаны без пробелов и тире: +78121234567

Требую всех, кто не отделяет пробелами код местности/оператора, объявить врагами народа.

==============

Что и требовалось доказать. Зачем лишние сущности в базе намеренно?

А в чем тут проблема? Разумеется, если хочется выделять локальный номер (хоть пробелами, хоть еще чем), такой программе нужна таблица длин префиксов.

+74967111111 — это +7 4967 11-11-11 Шишкин Лес или +7 496 711-11-11 Загорянский?

Даже не представляю, где это, есть ли там понятие “местный номер”, и какой он там длины, но в любом случае это один и тот же номер, записать ли его с пробелами или нет. Википедия уверяет, что в дп Загорянский Московской области телефоны имеют префикс +7 49656.

Какая разница с +7 или 8, только при звонках из за границы вы не сможете дозвониться, как бы в базе не был записан номер, он все равно будет набран. Тире пишутся по привычке.

С таким примером можно смело эту тему считать бестолковой и дальше не обсуждать.

А в чём эта разница и для чего её нужно понимать программе?
С точки зрения телефонной компании это один и тот же номер.

мне так какжется что тут пошло переливание из пустого в порожнее ??

ни одна программа поддерживающая стандарт E.164 не заметит разницы между +7 812 123-45-67, +7 8121 23-45-67 и +78121234567 - т.к. это один и тот же номер.

В том, что я, как конечный пользователь из Шишкиного Леса или Загорянского, хочу видеть номер в привычном для меня формате. (В Шишкином Лесу шестизначные номера, в Загорянском семизначные)

Тут же одни программисты собрались, которые не состоянии выкинуть все лишние символы из номера, но зато с лёгкость могут отформатировать номер без лишних символов как надо.

Ну то есть никаких объективных причин нет, есть только субъективный фактор в виде “привычный формат”.
А когда в Шишкином Лесу увеличился кол-во телефонов и они перейдут на 7-значные кода - будем все введённые номера перелопачивать?

сейчас конечному пользователю уже давно до лампочки на номер - ему нужно дозвониться куда ему нужно и пофих что это будет телефон, скайп, бибер или система барабанов племени тумба-юмба.
тем более что по стране безлимит.

приезжает он в англию а там опа и не понашенски циферки разграничивают…
приезжает в америку а там опа и номер написан буквами…

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