有谁有一个php类,或regex来解析一个地址的组件?至少,它应该分解成这些组件:街道信息,州,邮编,国家。
图书馆语言不可知的解决方案是使用Google的地理编码器。 它可以返回关于给定地址的详细、细分的信息。
http:/code.google.comapismapsdocumentationservices.html#Geocoding_Structured。
如果你的数据格式都非常相似,那么就用这个只是一个例子。正如Strager所指出的,在大多数情况下,数据会有太多变化,无法有效地使用regex。
假设你的输入是格式化的。
[Street Name], [State], [ZIP], [Country]
这个正则表达式就可以了
m/^(.+?),(.+?),([0-9]+),(.+)$/
但正则表达式是相当复杂的 如果你要用它来做任何重要的事情,我建议你花时间去学习它们。我一直觉得"正则表达式小抄"非常有用。
如果你说的是预先存在的数据,祝你们好运。 如果这是你可以控制输入的东西,我建议在输入层创建地址的不同部分的分离。 这只是一个建议。
问题是地址本身有各种形状和大小,它们不是自我验证的实体。 这意味着,如果不通过手工检查地址(即使这样也容易出错)或使用某种地址验证软件--无论是基于桌面的软件还是在线的软件--就无法真正知道你是否做对了。
有一些地址验证的网络服务,可以把一个地址分解成它的组成部分,并以一种安全的方式进行验证,其结果已经被认证为有效。
我应该提到,我是SmartyStreets的创始人。 我们提供地址验证服务,包括您所询问的美国地址验证功能。 我们的旗舰产品是我们的美国街道地址API,这是一个 地址验证网络服务API.
这里有一个 使用pyparsing的Python版本 用于解析街道地址。 它不是 PHP,但可能会让你对这个问题的复杂性有一些了解。
我找到了一个为波兰设计的php地址解析器,但在其他地方经过修改也可以使用。