kur.jp

バイオリンと自転車をこよなく愛するkurのチラシの裏。たまには技術的なことを書いたりするかも知れません。

phpで郵便番号のチェックをする

とあるシステムのために、ユーザが入力した郵便番号が正しいかどうかを確認するphpコードを書いた。

どうでも良い話ではあるんだけど、世の中のシステムを見てると、数字は半角で入力してくださいとか、全角で入力してくださいとか書いてあることが多い。でも、個人的にはその意図が理解できない。

だから自分が作るシステムでは、半角だろうが全角だろうが半角と全角が混ざってようが、ハイフンがあろうが無かろうが、受け入れよう。と言う方針でコードを書いた。その結果、こんな感じになった。

[php] function isValidZipCode($data){ $data = mb_convert_kana($data, 'a'); if(preg_match('/^\d{3}[ー―‐-]?\d{4}$/', $data)){ return true; }else{ return false; } } [/php]

まず下記の行で、入力されたデータの中に含まれる全角の数字を半角に変換する。

[php] $data = mb_convert_kana($data, 'a'); [/php]

次に、if文中の下記の部分で、$data中に含まれる値が、郵便番号の形式であるかをチェックする。

[php] preg_match('/^\d{3}[ー―‐-]?\d{4}$/', $data) [/php]

なお、ここで郵便番号の形式として考えているのは下記のパターン。

  • 7桁の数字
  • 3桁の数字ハイフン4桁の数字

そして、ハイフンのパターンとしても、全角、半角含めていくつかのパターンを想定している。