解析输入以查看它是地址,邮政编码,城市还是州?

时间:2010-06-24 22:05:32

标签: php javascript jquery google-maps codeigniter

我有一个工作板,用户通过Google-Maps API提交他的位置,并在地图上绘制作业。

问题是,因为它是基于位置的作业板,我想让最宽泛的输入允许使用邮政编码(因此用户可以输入邮政编码或地址)。无论如何要么解析输入以确定它是否是邮政编码或地址 - 或者Google Maps API是否会返回任何可以让我知道用户提供的输入有多宽的内容?

5 个答案:

答案 0 :(得分:1)

我找到了一个你可能想尝试的jquery插件parse addresses VIA google maps。来自doco:

$("#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']);
}

答案 1 :(得分:1)

有许多SO帖子讨论地址解析;搜索“parse address zip”和类似的短语。还有许多专门用于地址解析的工具。使用它们,因为地址很复杂,需要花费大量时间来学习。让现有工具为您完成工作。

答案 2 :(得分:0)

地址始终至少有一个空格。所以做一个简单的匹配。

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

地址永远不会是所有数字/破折号

if (preg_match("/^[0-9\-]$/"))
{
    // its a zipcode!
}

答案 3 :(得分:0)

我这样做的方法是基本上检查它是否为数字,如果是这样,则假设它是一个邮政编码,否则假设它是一个地址。毕竟,你不可能有一个只是一个数字的地址,而不是别的。

答案 4 :(得分:-1)

美国的邮政编码通常写成:

  • 90210
  • 90210-5555
  • 902105555

如果不是其中之一,请尝试将其解释为地址吗?