【发布时间】:2016-06-21 20:53:39
【问题描述】:
我有一张包含佛罗里达州所有市镇的表格。与许多州一样,我们的城市具有相同的根名称,但由方向唯一标识。例如,我们有一个城市叫“棕榈滩”,而我们有一个完全不同的城市叫“西棕榈滩”。
我从 .xls 文件中提取了一个字符串,如下所示:
3333 10TH ST., N. #201, WEST PALM BEACH, FL 34103
我想将字符串分成两段,段#2 应该以 WEST PALM BEACH 开头。因为如果我可以识别城市,那么将段#2 拆分为 CITY/STATE/ZIPCODE 将很容易。
我(意思是 PHP)真的不知道这个字符串中的城市出现在哪里(这是我的问题的一部分,因为字符串段因字符串而异——有些有逗号,有些没有逗号,所以我不能真正依靠逗号分隔来识别子字符串段)。
例如,电子表格可能很容易有如下所示的一行:
3333 10TH ST., N. #201, WEST PALM BEACH FL 34103(注意缺少逗号)。
这就是我要搜索表以匹配城市子字符串的原因,因为我不能相信逗号分隔或空格分隔字符串的结果会得到子字符串的最后三个部分,即 CITY STATE ZIP。
我需要从表中明确匹配 WEST PALM BEACH,而不是 PALM BEACH。
如何使用我的城市名称表来确定字符串中的城市是“WEST PALM BEACH”而不是“PALM BEACH”?
【问题讨论】:
-
邮政编码总是最后一个值吗?我会查一下城市名称。
-
@chris85 邮政编码始终是字符串的最后一部分。我可以使用邮政编码查找,但这会打开一大堆蠕虫!邮政编码查找历来处于不断变化的状态。但这个建议有很强的价值。我要去研究一下,这可能是一个解决方案。
-
@chris85 好吧,邮政编码查找可能就是这里的答案。
-
或者……城市和州之间只是缺少逗号吗?可能的正则表达式方法,regex101.com/r/jK7sM3/1。如果这些是唯一的偏差。
-
@chris85 我有 25,000 条记录,地址输入字段的方式不可靠。有些用逗号分隔城市和州,有些则没有。所以我必须找到一种可靠的方法来挑选最后三个部分:城市州邮政编码。我想我应该搜索城市子字符串,但多亏了你,我下载了带有城市和县的邮政编码查找。邮政编码总是最后一段,我认为这是解决方案。