まず、ユーザーから郵便番号の入力を受け付ける場合、想定されるフォーマットは以下の2通りとなる。
// ハイフンあり
xxx-xxxx
// ハイフンなし
xxxxxxx
ハイフンあり・なしでそれぞれ桁数が変わってくるが、今回はこのどちらにも対応した、郵便番号を3桁・4桁の二つのフィールドに分けるコードを紹介する。
substr関数を使う
substr関数を使う方法が最も簡単だろう。
function splitZip($zip) {
return array(substr($zip, 0, 3), substr($zip, -4));
}
上記で用意した関数は、ハイフンの有無に関わらず、引数に渡した郵便番号を3桁・4桁に分割して結果を配列として返す関数だ。
substr関数で先頭3桁、そして後ろから4桁を抽出し、配列として格納している。
動作確認をしてみる。
var_dump(splitZip('000-1111'));
var_dump(splitZip('0001111'));
// 以下出力結果
array(2) {
[0]=>
string(3) "000"
[1]=>
string(4) "1111"
}
array(2) {
[0]=>
string(3) "000"
[1]=>
string(4) "1111"
}
上記のとおり、いずれも同じ結果を得ることができる。