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号室"
感想
一番良いのは、住所のデータベース作って分割することなんだろうけど。工数かかりすぎるのでやめ。
佐川急便、郵便局、クロネコヤマトで各社微妙に住所のレイアウトが違う。
こういうところを調整する為のワーキンググループってあるのかな。
文字数にはいろんな意味があるので、一概には決めれないだろうけど。