とあるシステムのために、ユーザが入力した郵便番号が正しいかどうかを確認する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桁の数字
そして、ハイフンのパターンとしても、全角、半角含めていくつかのパターンを想定している。