Разобрать адрес Steet на компоненты - PullRequest
4 голосов
/ 16 ноября 2009

У кого-нибудь есть класс php или регулярное выражение для разбора адреса на компоненты? По крайней мере, он должен разбиваться на следующие компоненты: информация об улице, штат, почтовый индекс, страна

Ответы [ 7 ]

7 голосов
/ 16 ноября 2009

Решением, не зависящим от библиотеки / языка, было бы использовать для этого геокодер Google. Может возвращать подробную, разбитую информацию о данном адресе.

http://code.google.com/apis/maps/documentation/services.html#Geocoding_Structured

3 голосов
/ 16 ноября 2009

Редактировать: Используйте это просто в качестве примера, если все ваши данные отформатированы очень похоже. Как указал Страгер, в большинстве случаев будет слишком много различий в данных, чтобы эффективно использовать регулярное выражение.

Предполагается, что ваш ввод имеет формат:

[Street Name], [State], [ZIP], [Country]

Это регулярное выражение сделает свое дело:

m/^(.+?),(.+?),([0-9]+),(.+)$/

Но Регулярные выражения довольно сложны ... если вы собираетесь использовать это для чего-то значительного, я бы посоветовал потратить время на изучение регулярных выражений. Я всегда находил этот шпаргалку очень полезным:

http://www.addedbytes.com/cheat-sheets/regular-expressions-cheat-sheet/

2 голосов
/ 16 ноября 2009

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

1 голос
/ 16 ноября 2009

Вот версия Python, использующая pyparsing для анализа адресов улиц. Это не PHP, но может дать вам некоторое представление о сложности проблемы.

0 голосов
/ 02 января 2012

Я нашел анализатор php-адресов, который был разработан для Польши, но мог бы работать в другом месте с некоторыми изменениями:

Парсер адресов PHP

0 голосов
/ 13 октября 2011

Проблема заключается в том, что адреса сами по себе бывают всех форм и размеров, и они не являются самопроверяющимися объектами. Это означает, что не существует способа узнать, правильно ли вы сделали это, не проверив адрес вручную (и даже тогда он может быть подвержен ошибкам) ​​или используя какое-либо программное обеспечение для проверки адреса - будь то программное обеспечение для настольного компьютера или онлайн .

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

Я должен упомянуть, что я основатель SmartyStreets. Мы проводим проверку адресов, которая включает возможности, которые вы запрашивали для адресов в США. Нашим флагманским продуктом является LiveAddress, который представляет собой API веб-службы проверки адреса .

0 голосов
/ 16 ноября 2009
...