将街道地址解析为组件

时间:2009-11-16 02:35:15

标签: php regex street-address

有没有人有php类或正则表达式来解析组件中的地址?至少,它应该分解成这些组件:街道信息,州,邮编,国家

7 个答案:

答案 0 :(得分:7)

库/语言无关的解决方案是使用Google的地理编码器。它可以返回有关给定地址的详细,细分信息。

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

答案 1 :(得分:3)

编辑:使用此作为示例,如果您的数据格式非常相似。正如Strager指出的那样,在大多数情况下,数据的变化太大,无法有效地使用正则表达式。

假设您输入的格式为:

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

这个正则表达式可以解决这个问题:

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

但正则表达式相当复杂......如果您打算将其用于任何重要的事情,我建议您花时间学习正则表达式。我总是发现这个备忘单非常有用:

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

答案 2 :(得分:2)

如果您正在谈论预先存在的数据,那么祝您好运。如果这是你可以控制输入的东西,我建议在输入级别创建地址的不同部分的分离。 Jus的建议。

答案 3 :(得分:1)

这是用于解析街道地址的Python version using pyparsing。它不是PHP,但可能会让您对问题的复杂性有所了解。

答案 4 :(得分:0)

答案 5 :(得分:0)

问题在于地址本身具有各种形状和大小,并且它们不是自我验证实体。这意味着没有办法真正知道你是否在没有手工检查地址的情况下做到了(即使这样也容易出错)或使用某种地址验证软件 - 无论是基于桌面的软件还是在线

有许多地址验证网络服务可以获取地址并将其分解为其组成部分,并以安全的方式进行,结果已被证明有效。

我应该提一下,我是SmartyStreets的创始人。我们的确进行了验证,其中包括您询问的基于美国地址的功能。我们的旗舰产品是Li​​veAddress,address verification web service API

答案 6 :(得分:0)

我找到了一个专为波兰设计的php地址解析器,但可能会在其他地方进行一些修改:

PHP address parser

相关问题