我正在與一個JSON API進行交互,該JSON API提供了一個響應查詢的地址。然後,我將返回的地址元素放入MYSQL數據庫表中。從PHP中刪除重複的地址行PHP
數據返回爲AddressLine1,AddressLine2,Region,Postcode。我遇到的問題是數據的質量很低,很多AddressLine1數據在元素中被複制。例如,一個典型的回報可能是
123 My House 123 My House, My Road
我試圖找出我怎麼能去掉「123我的家」的第二次出現不刪除「我的」,從「我的路」的一部分。
我試過各種正則表達式,但我的正則表達式很弱!我也嘗試過內爆,但我所能做的就是刪除除第一個實例外的所有重複單詞,這對我沒有任何幫助。
我想我需要保持一個詞的首次出現,並使用逗號作爲各部分分隔所以我將最終得到的是去除所有其他的一些途徑...
123 My House, My Road
任何人都可以將我指向正確的方向嗎?我想我需要在逗號分割字符串數組,然後檢查數組的每個部分重複和刪除它們,然後重新組裝成一個字符串數組?也許?
我已經成功地做到這一點像這樣...
$string = "123 My House 123 My House, My Road";
$split = (explode(',', $string));
foreach($split as $section){
$cleaned = implode(' ',array_unique(explode(' ', $section)));
if (!empty($result)){
$result = $result." ,";
}
$result = $result.$cleaned;
}
echo $result;
誰能提供更好的解決方案?
建議:逐個字符迭代字符串,測試'substr(0,i)'是否等於'substr(i,i)',然後刪除(換句話說,測試字符串的一部分是否相等到零件跟隨它,慢慢地延長零件的長度)。我確信有很多方法可以用正則表達式。 - 總的來說,雖然這是一個相當複雜的問題,但幾乎沒有一種適用於清理不良數據的解決方案。 – deceze
你可以分享你使用的JSON API嗎? – Gordon