2014-11-05 47 views
0

我的每50万个账户的地址列表,在格式化。如何清理美国地址,使用PHP和/或MySQL

我需要做的就是清理地址,以便我可以找出占落在同一地址。我知道会有一些错误,但我需要尽我所能。

是否有一个服务,我可以用它可以验证地址或将地址格式为标准格式?

例如

RD->ROAD 
ST->Street 
STE->SUITE 
..... 
.... 

我不知道所有的组合。有没有我可以运行的脚本来更新地址?

我知道我可以使用MySQL REPLACE()函数来将RD替换为ROAD,但是如果steet名称本身接触会导致问题的单词“RD”会怎么样?如果我要做一个替换它将不得不是一个字替换不是一个标准的字符串替换。

我可以写一个PHP脚本,将更新地址(如下面的东西) ,但我需要知道所有可能的组合。

这个问题的最佳方法是什么? 我怎样才能找出我必须检查的所有/大多数组合?

<?php 

$arr = explode(" ", $row['address']); 
$clean = array(); 
foreach($arr AS $key=>$val){ 

if($val == 'RD') 
$new = 'ROAD'; 
else if ($val == 'STE') 
$new = 'SUITE'; 
else 
$new = $val; 

$clean[] = $new; 
} 
?> 
+1

谷歌地理编码API? – 2014-11-05 17:06:59

+0

@MattBall不行,地理编码API不验证地址,它是针对TOS使用它的批量数据。 – Matt 2014-11-05 19:39:32

回答

3

这实际上很难(相信我,我知道 - 我在SmartyStreets多年来一直在写这样的脚本)。当整个地址是单个字符串时更加困难。您需要的是支持自由格式解析的地址验证服务。 (SmartyStreets一样。)服务的

谷歌地图API的条款不允许对使用它的大容量的数据或储存超过临时缓存等原因的结果。此外,它不会验证地址 - 地址可能无效,并且仍会使用该API返回地理编码。

你可以做自己的研究,以找到能够满足您需求的服务。我有偏见,但我相信SmartyStreets将最经济地满足您的需求。该API由SLA保证待涨,很容易使用(只是让最多100个地址POST请求),只要你需要(虽然你可能应该检查数据可以存储数据更新每隔90 -120天,取决于你的地址是多么严格正确)。

服务,这是CASS-认证也可以将地址标准化,并以适当的格式,使得它琐碎删除重复的数据(即合并所代表的不同的地址相同)。