剪切地址字符串(Google Places API)并添加到数组

时间:2015-11-03 11:56:56

标签: php regex google-places-api

我正在使用Google Place 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ë
)

由于'邮政编码'(zipcode)和'plaats'(城市)之间没有逗号,我无法使用explode。输出将如下:

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

在Nederlands中,邮政编码采用这种格式1234 AA,因此我可以使用正则表达式在两个连续大写之后放置一个逗号,但比利时的邮政编码为1234格式,德国为12345。所以我有点卡在这里..

有人可以提供帮助吗?

2 个答案:

答案 0 :(得分:1)

您可以使用explode函数在数组

中创建它
$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);

答案 1 :(得分: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;
    }
}