GoogleMapのGeoCodingAPIをたたいた際、結果にすべての住所を含めたデータが返ってきます。
{
...省略...
"formatted_address": "日本、〒432-8002 静岡県浜松市中区富塚町1933−1 佐鳴湖パークタウンサウス 2F",
...省略...
}
緯度経度から取得できる住所の精度が高いところが非常に素晴らしいGoogleMAPのAPI。
レスポンスでは、バラバラになった住所と、すべて一つなぎになった住所が同時に返されます。
しかし、例えば郵便番号と住所を別々で取得したい場合など、上記のformatted_addressの値から一部を削る方が便利な時があります。
そんな時は、正規表現を使用すると、必要な部分だけきれいに取り出すことができます。
/^日本、〒([0-9]+)-([0-9]+)\s(.*)$/u
今回の場合、例えばPHPのpreg_match()をかけると次のようになります。
preg_match('/^日本、〒([0-9]+)-([0-9]+)\s(.*)$/u', '日本、〒432-8002 静岡県浜松市中区富塚町1933−1 佐鳴湖パークタウンサウス 2F', $m);
// 結果:
// $m[0] = 日本、〒432-8002 静岡県浜松市中区富塚町1933−1 佐鳴湖パークタウンサウス 2F
// $m[1] = 432
// $m[2] = 8002
// $m[3] = 静岡県浜松市中区富塚町1933−1 佐鳴湖パークタウンサウス 2F
これで、”日本”という文字を消しつつ、郵便番号と住所の部分を別々に取得できます。
GoogleMapなどのAPIから住所を取得する際の参考になれば幸いです。