将街道地址解析成组件 [关闭]

问题描述 投票:4回答:7

有谁有一个php类,或regex来解析一个地址的组件?至少,它应该分解成这些组件:街道信息,州,邮编,国家。

php regex street-address
7个回答
7
投票

图书馆语言不可知的解决方案是使用Google的地理编码器。 它可以返回关于给定地址的详细、细分的信息。

http:/code.google.comapismapsdocumentationservices.html#Geocoding_Structured。


3
投票

如果你的数据格式都非常相似,那么就用这个只是一个例子。正如Strager所指出的,在大多数情况下,数据会有太多变化,无法有效地使用regex。

假设你的输入是格式化的。

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

这个正则表达式就可以了

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

但正则表达式是相当复杂的 如果你要用它来做任何重要的事情,我建议你花时间去学习它们。我一直觉得"正则表达式小抄"非常有用。


2
投票

如果你说的是预先存在的数据,祝你们好运。 如果这是你可以控制输入的东西,我建议在输入层创建地址的不同部分的分离。 这只是一个建议。


2
投票

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

有一些地址验证的网络服务,可以把一个地址分解成它的组成部分,并以一种安全的方式进行验证,其结果已经被认证为有效。

我应该提到,我是SmartyStreets的创始人。 我们提供地址验证服务,包括您所询问的美国地址验证功能。 我们的旗舰产品是我们的美国街道地址API,这是一个 地址验证网络服务API.


1
投票

这里有一个 使用pyparsing的Python版本 用于解析街道地址。 它不是 PHP,但可能会让你对这个问题的复杂性有一些了解。



0
投票

我找到了一个为波兰设计的php地址解析器,但在其他地方经过修改也可以使用。

PHP地址解析器

© www.soinside.com 2019 - 2024. All rights reserved.