2009-11-16 23 views

回答

7

图书馆/语言不可知的解决方案将使用谷歌的地理编码器。它可以返回有关给定地址的详细分解信息。

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

+0

+1看起来像一个很好的资源。但请记住,它可能允许解析部分地址,例如,如果您只给出国家和州,那么对于这种部分信息可能没问题,而如果您正在构建需要的应用程序要使用邮寄地址,那种开放式的补贴可能会让你感到厌烦。*耸耸肩* – Kzqai 2009-11-16 21:43:53

+0

难道你不能只是验证解析的结果吗?也就是说,如果你不介意可能会触及谷歌。 – 2009-11-17 06:16:46

2

如果你谈论的是预先存在的数据,运气好到你们。如果这是你控制输入的东西,我建议在输入级别创建地址的不同部分的分离。 Jus'的建议。

+0

我尽量保持界面简单。我想让用户能够简单地在textarea中输入地址,然后我会尝试解析它。 – Andres 2009-11-16 02:48:50

+1

请记住,只提供一个开放式的字段,实际上是让它更复杂,因为您没有对输入指定任何强烈的要求,所以用户 - 以信息格式你 - 不能解析。最好提供分隔的字段,然后为可能不适合您的模式的地址提供“其他地址信息”字段。 – Kzqai 2009-11-16 21:39:08

3

编辑:如果你的数据是所有格式非常类似于使用这只是作为一个例子。正如Strager指出的那样,在大多数情况下,为了有效地使用正则表达式,数据会有太大的变化。

假定你输入的格式为:

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

此正则表达式将这样的伎俩:

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

不过正则表达式是相当复杂的......如果你要使用这个对于任何重要的事情,我会建议花时间学习正则表达式。我一直觉得这个小抄非常有用:

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

+4

由于地址有很多可能的形式,我不认为正则表达式是可行的。 – strager 2009-11-16 02:49:44

+0

@Strager:很好,谢谢。编辑。 – 2009-11-16 03:18:14

+0

+1为正则表达式备忘单,很有用,但我不认为这个正则表达式将是一个开放地址字段的很好的解决方案。 – Kzqai 2009-11-16 21:23:58

0

问题是地址本身有各种形状和大小,它们不是自我验证的实体。这意味着如果没有手工检查地址(甚至可能容易出错)或使用某种地址验证软件(无论是基于桌面的软件还是联机的),您都无法真正知道自己是否做得正确。

有许多地址验证Web服务可以接收地址并将其分解为其组成部分,并在结果经过认证有效的情况下以安全的方式进行。

我应该提到我是SmartyStreets的创始人。我们确实解决了验证问题,其中包括您针对美国地址询问的功能。我们的旗舰产品是Li​​veAddress,它是一个address verification web service API

+0

与SmartyStreets商业广告的声音一样好,请注意 - 这仅适用于美国。 – 2014-01-13 10:50:29

+0

在我们的主页上正确的是我们说的“USPS地址验证”。 这是我们的FAQ页面看: http://smartystreets.com/kb/faq/do-you-verify-international-addresses 下面是谷歌的搜索结果,我们对“美”的网站时 https://开头www.google.com/search?q=site%3Asmartystreets.com+united+states – 2014-01-13 13:36:17

+0

够公平的,删除了我对disqus的评论,但论点仍然认为,由于这个限制,SStreets只是局部解决一般问题地址验证提出了这个问题。 – 2014-01-13 14:39:37

0

我发现,是专为波兰,但可能有一些修改工作,在其他地方一个PHP解析器地址:

PHP address parser

+0

如果有美国版本,肯定会赞成。 – 2012-08-27 19:57:35