2015-11-03 59 views
1

我正在使用Google Place API查找地址。 一些輸出的例子:將地址字符串(Google Places API)分段並添加到數組中

Laag-Beugt 2 C, 5473 KB Heeswijk Dinther, Nederland 
Industrieweg 36, 8091 AZ Wezep, Nederland 
Rijakkerweg 7, 5741 RR Beek en Donk, Nederland 
Antoon van Hooffplein 1, 6816 SH Arnhem, Nederland 
Lingewal 2A, 6681 LJ Bemmel, Nederland 
Lekdijk 120, 3999 NX Tull en Het Waal, Nederland 
Concordialaan 2, 4874 NZ Etten-Leur, Nederland 
Tibsterwei 4B, 9131 EG Ee, Nederland 

Besser Str. 45, 34281 Gudensberg, Duitsland 
Fabriekstraat 2, 9470 Denderleeuw, België 

現在我想這些字符串切成片,放在陣列,如:

Array 
(
    [adres] => Laag-Beugt 2C //No space between the 2 and the C 
    [postcode] => 5473 KB 
    [plaats] => Heeswijk Dinther 
    [land] => Nederland 
) 

Array 
(
    [adres] => Lekdijk 120 
    [postcode] => 3999 NX 
    [plaats] => Tull en Het Waal 
    [land] => Nederland 
) 
Array 
(
    [adres] => Tibsterwei 4B 
    [postcode] => 9131 EG 
    [plaats] => Ee //Shortest cityname in the Netherlands 
    [land] => Nederland 
) 

Array 
(
    [adres] => Besser Str. 45 
    [postcode] => 34281 
    [plaats] => Gudensberg 
    [land] => Duitsland 
) 

Array 
(
    [adres] => Fabriekstraat 2 
    [postcode] => 9470 
    [plaats] => Denderleeuw 
    [land] => België 
) 

由於還有的「郵政編碼」(郵編)之間沒有逗號和「 plaats'(城市),我不能使用explode。輸出將是這樣的:

Array 
(
    [adres] => Laag-Beugt 2C 
    [postcode] => 5473 KB Heeswijk Dinther 
    [plaats] => Nederland 
) 

在荷蘭一個郵政編碼的格式如下1234 AA,所以我可以使用正則表達式來打一個逗號連續兩個京後,但在比利時的郵編是1234格式和德國12345。所以我有點卡在這裏..

有人可以幫助嗎?

+0

你到目前爲止試過了什麼?張貼你的企圖.. –

+0

@Uchida我已經更新了我的問題。 – JK87

回答

1

可以使用爆炸功能,使其在陣列

$rowAddress="Laag-Beugt 2 C, 5473 KB Heeswijk Dinther, Nederland"; 
$arr=explode(',',$rowAddress); 

$add['adres']=$arr[0]; 
$add['postcode']=$arr[1]; 
$add['plaats']=$arr[2]; 
echo '<pre>'; 
print_r($add); 
+0

爆炸在這種情況下是無用的,因爲'5473 KB Heeswijk Dinther'(郵編,plaats(郵編,城市))沒有逗號。 – JK87

0

也許不是最漂亮的,高效的代碼,但它的作品。

如果有人能加強它,請做。

function addressArray($address) { 

    $addressArray = explode(', ', $address); 
    $headers = array('adres', 'postcode', 'plaats', 'land'); 

    if ($addressArray[2] == 'Nederland' || $addressArray[2] == 'Duitsland' || $addressArray[2] == 'België') { 

     if ($addressArray[2] == 'Nederland') { 
      $replace = preg_replace('/(\S+\s+\S+)\s/', '$1, ', $addressArray[1], 1); 
     } 

     if ($addressArray[2] == 'Duitsland'|| $addressArray[2] == 'België') { 
      $replace = preg_replace('/(\S+)\s/', '$1, ', $addressArray[1], 1); 
     } 

     $replaceArray = array(1 => $replace); 

     $replace = array_replace($addressArray, $replaceArray); 
     $addressString = implode(', ', $replace); 

     $newArray = explode(', ', $addressString); 

     return array_combine($headers, $newArray); 
    } 
    else { 
     return false; 
    } 
} 
相關問題