Формат телефонного номера

0

Мне нужно отформатировать список телефонных номеров, и я бы хотел извлечь и отделить префикс от номера для лучшего просмотра.
У меня есть список всех возможных префиксов, но нет регулярного шаблона.
Я имею в виду, я мог бы иметь эти цифры:

00 - 12345 (короткий префикс)
0000 - 12345 (длинный префикс)

Как я могу это сделать? Числа равны, без каких-либо специальных char (т.е. Без /\ -., Ecc ecc).
Префиксы таковы:

030
031
0321
0322
...
...

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

== EDIT ==
Список префиксов составляет 231 запись. Возможно, я добавлю что-то еще, так что возьмите 300 как безопасное значение
Более того, префиксы исходят только из одной страны (Италия)
Я должен сохранять простые числа без разделителя, чтобы пользователи могли его искать. Infact, если они помещают разделители, они никогда не смогут снова найти это.

Дополнительная информация
Префикс ALWAYS начинается с ведущего 0, его длина варьируется от 2-4

Но чем больше я изучаю эту вещь, тем больше я думаю, что не могу ее решить: (

  • 0
    Насколько велик список префиксов?
  • 0
    @Peter 231, я тоже редактировал пост
Показать ещё 4 комментария
Теги:

4 ответа

0
Лучший ответ

ОК, я проработал.
Я видел, что нет префиксов shor, которые разделяют символы с более длинным.
Я имею в виду:
02 → никогда не будет более длинного префикса как 021, 022 и т.д.

теперь все довольно просто:

Я получаю первые 4 числа → , что в моей таблице префикса?
ДА: остановитесь здесь НЕТ: получить первые 3

и т.д.

спасибо за помощь

1

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

Я не уверен, что это упростит ваш запрос, но у меня возникла мысль, что синтаксический анализ из справа налево может быть проще для вас, так как это длина префикса, которая неизвестна

  • 0
    Если правильная длина фиксирована, то это решение. Иначе он облажался.
0

Я действительно смущен. Что значит "извлекать и отделять"? Я предполагаю, что эти номера телефонов находятся в базе данных MySQL, и вы можете использовать PHP. Вы пытаетесь получить префикс из чисел, а затем вставить их в другое поле в одной строке? Вы вытаскиваете эти цифры из базы данных, и вы просто хотите напечатать префиксы на экране?

Независимо от того, что вы пытаетесь сделать и считаете само собой разумеющимся, что вы используете PHP и регулярные выражения, разве это не то, что вы ищете?

$telephone_number = '333-12345';
$matched = array();
preg_match('~^(\d+)-~', $telephone_number, $matched);
$matched[1]  // Should be '333'
  • 0
    телефон 33312345, без разделителя. я хочу показать разделитель, если это возможно
  • 0
    @ tampe125 Имеет ли вторая часть числа постоянную длину?
Показать ещё 1 комментарий
0

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

Во-первых, проверьте, могут ли первые несколько номеров соответствовать вашему префиксному списку. Для некоторых, надеюсь, только один префикс может быть правильным.

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

Наконец, вы можете по умолчанию использовать самый популярный формат для префиксов.

Без какой-либо другой информации вы не можете сделать лучше, чем хорошее предположение, если вы не хотите, чтобы по умолчанию вообще не был формат.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню