Обнаружение кода страны MSISDN
Как я могу определить код страны по следующему MSISDN?
Кипр (+357XXXXXXXX) - 11 цифр
Финляндия (+358XXXXXXXXXX) - 13 цифр
Сербия (+381XXXXXXX) - 10 цифр
Разные страны имеют разное количество цифр в коде своей страны, а также в MSISDN, поэтому невозможно сопоставить только код страны со всем номером.
Итак, как я могу получить код страны из определенного MSISDN?
1 ответ
Если данные представлены в фиксированном формате: {country_code} {space} {phone_digits}
Вы можете легко использовать строковые операции (регулярное выражение, разбиение и т. д.), чтобы получить часть кода страны. Чтобы определить, какую страну представляет код, вы должны сопоставить его со списком известных кодов стран - либо сохраните их в своей базе данных, либо используйте веб-сервис для проверки.
Возможный подход состоит в том, чтобы получить из базы данных коды стран и сравнить вручную, где вы находите совпадение - в случае, если формат не соответствует. Это может привести к ошибкам, так как коды стран также могут различаться по длине, и вы можете выбрать неправильный. В некоторой степени приемлемый подход, если нет другого выбора, состоит в том, чтобы сначала сопоставить самые длинные, а затем более короткие коды - однако нет гарантии недопустимых совпадений. Чтобы полностью избежать этой проблемы, рассмотрите следующее предложение:
Если вы контролируете, как сохраняются телефонные номера (в вашей базе данных или в любом другом хранилище), я бы посоветовал вам сохранить код страны в отдельном поле. Для базы данных SQL это будет означать, что у вас есть столбец для кода страны, а другой - для номера телефона. Вы можете легко извлечь код страны с абсолютной уверенностью и обработать его любым удобным для вас способом.
Как видно из комментариев, рассматриваемый формат - это то, что вы ожидаете от своих клиентов API. Если это так, вы должны попытаться применить некоторые ограничения к формату - заставить клиента передавать код страны в качестве отдельного параметра или использовать подходящий символ разделителя. Если это так, вы в конечном итоге разберете код и определите страну. Это будет зависеть от клиента, чтобы соответствовать желаемому формату.