Парсинг ввода, чтобы увидеть, является ли это адрес, почтовый индекс, город или штат? - PullRequest
2 голосов
/ 25 июня 2010

У меня есть доска объявлений, где пользователь отправляет свое местоположение через API-интерфейс Google-Maps, который отображает работу на карте.

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

Ответы [ 5 ]

1 голос
/ 25 июня 2010

Есть много сообщений SO, обсуждающих разбор адресов; поиск "разбить адрес почтовый индекс" и подобные фразы. Есть также много инструментов, уже написанных специально для анализа адресов. Используйте их, потому что адреса сложны со многими соображениями, на изучение которых уходит много времени. Пусть существующие инструменты сделают всю работу за вас.

1 голос
/ 25 июня 2010

Я нашел плагин jquery парсинг адресов VIA google maps , который вы, возможно, захотите попробовать. Из документа:

$("#submit").click(function(){

  // use parseaddress plugin on an element, send response to callback function

  $("#addressinput").parseaddress(callback);

});

var callback = function(cleanaddress) {
  console.log(cleanaddress['street']);
  console.log(cleanaddress['city']);
  console.log(cleanaddress['state']);
  console.log(cleanaddress['country']);
  console.log(cleanaddress['zip']);
  console.log(cleanaddress['lat']);
  console.log(cleanaddress['lon']);
}
0 голосов
/ 25 июня 2010

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

0 голосов
/ 25 июня 2010

В адресе всегда будет хотя бы один пробел.так что просто сопоставьте это.

if (preg_match("/ /", $input)
{
    //   its an addresss!
}

Также адрес никогда не будет состоять из всех цифр / тире

if (preg_match("/^[0-9\-]$/"))
{
    // its a zipcode!
}
0 голосов
/ 25 июня 2010

Почтовые индексы в США обычно пишутся так:

  • 90210
  • 90210-5555
  • 902105555

Еслиэто не один из них, попробуйте интерпретировать его как адрес?

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