Определение информации о номере телефона и переформатирование в PHP - PullRequest
1 голос
/ 06 октября 2010

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

Примеры:

  • 00447749123123 = международный номер в Великобритании - переформатировать в 447749123123

  • + 447749123123 = международный номер в Великобритании - переформатировать в 447749123123

  • 447749123123 = международный номер в Великобритании

  • 07749123123 = национальный номер Великобритании - запросить код страны и переформатировать в 447749123123

  • 18775784000 = международный американский номер

  • 8775784000 = национальный американский номер - запросить код страны и переформатировать в 18775784000

Кто-нибудь знает, существует ли такой сценарий или нет, как это сделать? ИТ должны работать для максимально возможного количества стран (не только для Великобритании и США).

Ответы [ 2 ]

1 голос
/ 07 октября 2010

Нет ничего бесплатного, но Neustar будет вашим лучшим платным сервисом. Я думаю, что они также предлагают услуги международных номеров, но вам, возможно, придется кодировать свой собственный интерфейс API. Другой платный маршрут может быть Twilio , но я не уверен в их международных возможностях. Я знаю, что некоторые крупные агрегаторы SMS могут предлагать это для своих продуктов, но не в качестве отдельного API / сервиса. Если вы ищете платный вариант, вы можете попробовать OpenMarket (MxTelecom для международных). Просто мысль

1 голос
/ 06 октября 2010

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

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

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

  1. Создание жесткого решения, которое работает только с известными форматами телефонных номеров
  2. Создание гибкого решения, которое принимает только легко идентифицируемые международные форматы, но, как следствие, принимает любой внутренний формат.

Я бы выбрал второй вариант.

В ваших примерах № 1 и 2 легко идентифицируются как международные номера. Номер 3 трудно идентифицировать, потому что это может быть либо международный номер в Великобритании , либо неизвестная страна с 12-значными внутренними телефонными номерами.

Так что я бы начал с принятия варианта один и два в качестве действительных международных номеров и пропуска номер три.

<?php
$number = "00447749123123"; // remember the quotes the number must 
                            // keep leading zeros.

if (preg_match('/^(00|\+)/', $number)) {
    echo "International number";
    // parse and recognize country code.
} else {
    echo "national number";
    // identify which country
}

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

...