Я видел несколько вопросов о SO, похожих на то, что мне нужно, но ничего не похоже на счет.Определить страну по телефонным номерам
Я нахожусь в положении, когда мне нужно иметь дело с записью звонков и определить страну, используя номер телефона. Набранный номер может быть любая страна, например:
44 7899455120 - Великобритания
34 965791845 - Испания
355 788415235 - Албания
Очевидно, что мир был бы замечательно, если бы все призывающие коды были два цифр, но это не так. В настоящее время у меня есть база данных, полные стран и их соответствующих кодов и для того, чтобы соответствовать мне нужно, чтобы эффективно взять первую цифру т.е. 4
на пример Великобритании и сделать запрос к базе данных, например:
SELECT * from countries WHERE code LIKE '4%'
Это может дать мне, например, 20 результатов. Так что цикл снова и не сказать
SELECT * from countries WHERE code LIKE '44%'
Это может дать мне сказать, один результат, теперь я могу определить, является Великобритания. Некоторые коды, однако, как Албания, представляют собой три цифры и требуют больше циклов и запросов к базе данных. Это кажется довольно рудиментарным и неэффективным, но, как я не могу придумать другого способа добиться этого. Я понимаю, что три вызова в базу данных могут показаться не такими, но если у вас есть 1000 звонков, чтобы разобраться с ними, они скоро сойдутся.
Глядя на следующий вопрос:
What regular expression will match valid international phone numbers?
Там, кажется, немного большой информации о проверке ряда против кодов стран, но не столько об определении кода страны из числа. Любые советы или предложения по более чистым методам будут высоко оценены.
пространства в телефоне показаны для ясности
Это может быть невозможно без конкретной точки совпадения. В мире всего 196 стран, а не большое дело ... – vamsi
Вам следует рассмотреть возможность запуска более общего поиска с услугами, предлагаемыми сторонней стороной, или поисковой таблицей, содержащей CC + Length, для «лучшего предположения». Вы можете найти спецификации @ ITU (рекомендуем http://www.itu.int/rec/T-REC-E.164-201011-I/en). Также см., Например, как Ямайка отличается от США (http: // www.wtng.info/wtng-1876-jm.html), или как Израиль/Палестина или Сателитные службы используют «префикс» (CC) –
Можете ли вы указать, что такое параметр поиска? Я имею в виду, вход, который вы отправляете в MySQL для получения данных, потому что в зависимости от этого мы можем дать вам лучший ответ. –