Форматирование адреса доставки по стране в PHP (или Perl)

У меня есть HTML-форма, которая принимает входной адрес доставки по частям (адрес улицы, город, штат/провинция, почтовый индекс и страна). Затем эта форма обрабатывается с помощью PHP.

Я хочу преобразовать этот адрес в правильный формат для страны назначения. Существуют ли какие-либо библиотеки или внешние службы, которые я мог бы использовать для этого преобразования в PHP? Если нет, могу ли я сделать это с помощью Perl или подобного языка?


person Eric    schedule 18.11.2012    source источник


Ответы (3)


Никогда не использовал его, но Geo::PostalAddress — хорошая отправная точка. Полезные ссылки на правила, если ничего больше.

Обратите внимание, что различные транспортные компании (FedEx, DHL и т. д.) имеют свои правила форматирования адреса.

person Richard Huxton    schedule 18.11.2012

В Perl вы можете использовать Class::Phrasebook. Использовать его очень легко.

use Class::Phrasebook;
my $pb = new Class::Phrasebook($log, "test.xml");
$pb->load("NL"); # using Dutch as the language
$phrase = $pb->get("ADDRESS", 
                   { street => "Chaim Levanon",
                     number => 88,
                     city   => "Tel Aviv" } );

Теперь в вашем случае адрес доставки будет динамическим (который будет предоставлен пользователем), поэтому вам придется проделать дополнительную работу. Вы можете создать файл XML, добавить словари для всех стран, добавить фразы (улица, город, штат/провинция, почтовый индекс) в каждый словарь. Запишите данные о стране в каждой фразе, например «Street address: $street» для английского словаря, «addresse: $street» для французского словаря и т. д. А затем получите доступ к словарю в соответствии со страной пользователя.

Дополнительные сведения см. на странице CPAN.

person Chankey Pathak    schedule 18.11.2012
comment
Я думаю, что @Eric спрашивает о формате адреса. Например, немецкие адреса имеют почтовый индекс перед городом/городом, а британские адреса помещают его после. Ирландия вообще не использует почтовые индексы. - person Richard Huxton; 18.11.2012
comment
Проклятие! Я неправильно понял вопрос. Спасибо, Ричард, за предоставление информации о формате почтового индекса, я этого не знал. - person Chankey Pathak; 18.11.2012

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

Однако я уверен, что другие приведенные решения также будут работать.

person Eric    schedule 24.11.2012