2014-11-05 20 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-認證也可以將地址標準化,並以適當的格式,使得它瑣碎刪除重複的數據(即合併所代表的不同的地址相同)。