Есть ли наилучшая практика преобразования строк местоположения в США в отдельные части?

Существует ли передовая практика или общий алгоритм для реализации преобразования естественной строки поиска местоположения местоположения (только для США) в отдельные компоненты?

Например:

City Name, ST 00000

TO

city => City Name
state => ST
zipcode => 00000

Это для формы, поэтому мне не нужно обрабатывать любые возможные перестановки - я могу ограничить формат чем-то вроде: city, st 00000, но мне нужно иметь возможность обрабатывать пропуск любого из сегментов в формате, чтобы они были необязательными для некоторых степень... некоторые примеры поддерживаемых комбинаций (без учета регистра):

00000 // zipcode
0000-00000 //zipcode
city, st / city and state - comma separated
city st // city and state - space separated
city, st 00000 // city state zip
st 00000 // state and zip - though i only really need the zip
city 00000 // city and zip - though i only really need the zip

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


person prodigitalson    schedule 23.02.2011    source источник
comment
Отойди! Я знаю регулярные выражения! xkcd.com/208   -  person corsiKa    schedule 23.02.2011
comment
Если вы хотите, чтобы это было общим, я бы отправил его в API местоположения, такой как Google Maps.   -  person ide    schedule 23.02.2011
comment
@glowcoder: хахахаха... бесценно. Тем не менее, кажется, что это довольно распространенная вещь. Прямо сейчас я не реализую геопространственный поиск (когда я плохо использую API), мне просто нужно разделить строку (из одного поля формы) на потенциальные значения для быстрого поиска БД...   -  person prodigitalson    schedule 23.02.2011


Ответы (2)


Пока я исследовал, я нашел другой код, на который есть ссылка в другом SO question который я использовал, пока ждал... Я изменил код здесь, чтобы поддерживать получение почтового индекса, а также штата города: http://www.eotz.com/2008/07/parsing-location-string-php

Другие также могут найти это полезным.

@delphist: СПАСИБО. Как только у меня будет время сравнить точность и производительность, я могу переключиться на ваш код, если он лучше - он определенно проще/короче! Если я это сделаю, я отмечу это как официальный ответ.

person prodigitalson    schedule 23.02.2011

person    schedule
comment
Это могло бы сработать... но я думаю, что лучше нажму несколько раз, чтобы справиться с любой комбинацией (если только у вас нет какого-то безумного регулярного выражения, чтобы справиться с этим за один раз, ха). Это будет немного медленнее, но я не думаю, что это неприемлемо. - person prodigitalson; 23.02.2011
comment
я мог бы помочь вам, если вы приведете несколько примеров комбинаций - person delphist; 23.02.2011
comment
состояния всегда двухсимвольные? (Калифорния, Техас, Юта) ? - person delphist; 23.02.2011