developer's diary

最近はc#のエントリが多いです

PHPで文字列から数字が見つかった時点で2つに分ける。住所を分割したい。

ヤマトビジネスメンバーズのB2クラウドの仕様上16文字以内という仕様があるため、以下のような文字数だと分割する必要がある。

大阪府大阪市此花区伝法4-3-1大和ハウス1099号室

なので、正規表現でやってみる。

<?php

$a = "大阪府大阪市此花区伝法4-3-1大和ハウス1099号室";
preg_match('/^[^0-9]*/', $a, $matches, PREG_OFFSET_CAPTURE);
$address1 = $matches[0][0];
$address2 = str_replace($address1, "", $a);
var_dump($address1);
var_dump($address2);
var_dump($a);

結果

string(33) "大阪府大阪市此花区伝法"
string(30) "4-3-1大和ハウス1099号室"
string(63) "大阪府大阪市此花区伝法4-3-1大和ハウス1099号室"

感想

一番良いのは、住所のデータベース作って分割することなんだろうけど。工数かかりすぎるのでやめ。

佐川急便、郵便局、クロネコヤマトで各社微妙に住所のレイアウトが違う。

こういうところを調整する為のワーキンググループってあるのかな。

文字数にはいろんな意味があるので、一概には決めれないだろうけど。