【发布时间】:2009-11-16 02:35:15
【问题描述】:
有没有人有一个 php 类或正则表达式来将地址解析为组件?至少,它应该分解成这些组件:街道信息、州、邮编、国家/地区
【问题讨论】:
标签: php regex street-address
有没有人有一个 php 类或正则表达式来将地址解析为组件?至少,它应该分解成这些组件:街道信息、州、邮编、国家/地区
【问题讨论】:
标签: php regex street-address
与库/语言无关的解决方案是为此使用 Google 的地理编码器。它可以返回有关给定地址的详细分解信息。
http://code.google.com/apis/maps/documentation/services.html#Geocoding_Structured
【讨论】:
如果您的数据的格式都非常相似,请将此用作示例。正如 Strager 所指出的,在大多数情况下,数据的差异太大而无法有效地使用正则表达式。
假设您的输入格式为:
[Street Name], [State], [ZIP], [Country]
这个正则表达式可以解决问题:
m/^(.+?),(.+?),([0-9]+),(.+)$/
但是正则表达式相当复杂。如果您打算将其用于任何重要的事情,我建议您花时间学习它们。我一直觉得“Regular Expressions Cheat Sheet”很有用。
【讨论】:
如果您谈论的是预先存在的数据,祝您好运。如果这是您可以控制输入的内容,我建议在输入级别创建地址不同部分的分隔。只是一个建议。
【讨论】:
这是用于解析街道地址的Python version using pyparsing。它不是 PHP,但可能会让您对问题的复杂性有所了解。
【讨论】:
问题是地址本身有各种形式和大小,它们不是自我验证的实体。这意味着如果不手动检查地址(即使这样也容易出错)或使用某种地址验证软件(无论是基于桌面的软件还是在线的),就无法真正知道您是否做对了.
有许多地址验证网络服务可以获取地址并将其分解为其组成部分,并以安全的方式进行,结果已被证明是有效的。
我应该提到我是 SmartyStreets 的创始人。我们会进行地址验证,其中包括您针对美国地址询问的功能。我们的旗舰产品是美国地址 API,即address verification web service API。
【讨论】:
【讨论】:
我找到了一个专为波兰设计的 php 地址解析器,但经过一些修改可能会在其他地方工作:
【讨论】: