本日は郵便番号を正規表現でチェックする方法を紹介します。
郵便番号を正規表現でチェックする機会は企業のサイトやECのサイトなどで数多くあります。
住所を入力する際には郵便番号を入力する事がほとんどなためですね。
その際に郵便番号正しく入力されているかをチェックする必要がありますが、これをプログラムを使って行なってみましょう。
正規表現と言うと難しい印象を受けるとは思いますが、一つずつ解説しますので是非ご覧下さい。
郵便番号を正規表現でチェックする方法
では早速ですが、郵便番号を正規表現でチェックする方法をコードで見てみましょう。
まずはHTMLで郵便番号を入力する入力フォームを作成します。
<form action="postcode.php" method="get">
<input type="text" name="postcode" size="10" maxlength="8" id="postcode">
<input type="submit" value="送信する">
</form>
その上で、同じ階層に「postcode.php」というPHPファイルを作成し、以下のように記述します。
<?php $postcode =mb_convert_kana($_REQUEST['postcode'],'a','UTF-8');
if(preg_match("/\A\d{3}[-]\d{4}\z/",$postcode)){
print('郵便番号:'.$postcode);
}else('※郵便番号が正しく入力されていません');
?>
上記のコードでは、if文を使い、郵便番号が正しく入力されていればその郵便番号を表示し、正しく入力されていない場合は「郵便番号が正しく入力されていません」というメッセージが出るコードとなっております。
一行ずつ分解して見てみましょう。
解説
$postcode =mb_convert_kana($_REQUEST['postcode'],'a','UTF-8');
上記のmb_convert_kana()という関数は、全角入力された文字を半角入力に変換するという機能を持っています。
第一引数には変換したい文字列を入力しますがここでは先に書いたHTMLで入力された値を「$_REQUEST['postcode']」で取得しています。
第二引数にはaと入っていますが、これはmb_convert_kana()のオプションで「a」と入力すると「「全角」英数字を「半角」に変換します。」という意味になります。
詳しくはこちらのPHPのリファレンスもご覧下さい。
三つ目の引数には文字エンコーディングを指定します。
もし指定されなければ、そのファイルのに書かれたエンコーディングを使用します。
preg_match("/\A\d{3}[-]\d{4}\z/",$postcode)){
では上記の部分について詳しく見ていきましょう。
preg_matchという関数は、正規表現を使う時に使用する関数です。
文字列から、指定した正規表現のパターンにマッチするものを返してくれます。
"/\A\d{3}[-]\d{4}\z/"
そして上記の正規表現の意味についてです。
最初と最後の「/(スラッシュ)」は正規表現の始まりと終わりを表しています。
Aというのは文章の先頭、zは文章の終わりを表しており、dというのはdecimal(小数)を表しています。
{3}は少数が3つ、という意味になります。
[-]はハイフン、d{4}は少数が4つという意味。
つまり、数字が3つ、ハイフン、更に数字が4つの文字列であれば、それを郵便番号として認識する、という意味になります。
正規表現は意味がわからないと意味不明な呪文にしか見えないのですが、一つ一つの意味を理解していくとそこまで難しくはないですよね。
終わりに
いかがでしたでしょうか。
郵便番号をチェックする仕様はWEB制作では頻繁に使うものなので、使い方を覚えておいて損はないはずです。
全てを覚えずとも、こういったやり方を知っているだけでも引き出しが増えるので是非活用してみて下さいね。
というわけで本日の記事は以上です( ͡° ͜ʖ ͡°)