はじめに

前回の記事で全角で入力した情報を自動で半角に直すという処理を行いました。
次は郵便番号が正しく入力されたか判定してくれるプログラムやPHPを使った別のページへの遷移など1つ1つ取り上げていきたいと思います。
郵便番号の正規表現

フォームでは住所の項目がある場合があり、その中に郵便番号の入力欄があります。
郵便番号の正規表現は「123-4567」のようにハイフン(-)が入るようなフォーマットですが、こちらもユーザーによって「1234567」だったり、書き方が変わる可能性が高いです。
そこでPHPを使って正規表現で入力されているか判定してくれるプログラムを組んでみようと思います。
まずはindex.htmlに郵便番号の入力欄を設置します。
——————
<h2>郵便番号</h2>
<input type=”text” id=”my_post_number” name=”my_post_number”>
——————
上書き保存をし、ブラウザで表示を確認してみます。
郵便番号の入力欄が表示されていましたら問題ありません。
次に「送信する」ボタンをクリックした後に遷移するsubmit.phpに処理を追加していきます。
submit.phpに以下のように追加してみます。
——————
<h2>郵便番号</h2>
<?php if(!empty($_REQUEST[‘my_post_number’])): ?>
<?php
if(preg_match(“/\A\d{3}[-]\d{4}\z/”, $post_number)){
echo ‘郵便番号:〒’ . $post_number;
}else{
echo ‘※郵便番号を正しくご記入ください’;
}
?>
<?php endif; ?>
——————
上書き保存をし、ブラウザで表示を確認してみます。
まず正規表現以外のものを入力して、「送信する」ボタンをクリックします。
正規表現である「123-4567」の形式ではないためsubmit.phpの画面で「※郵便番号を正しくご記入ください」と表示されました。
ちなみに「12-34567」というものも、正規表現のハイフン前の数字が3つかつハイフン後の数字が4つではないので、同様のエラーが表示されます。
それでは次は正規表現を入力し、「送信する」ボタンをクリックするとどうなるか確認します。
するとしっかりsubmit.phpの画面にも入力した郵便番号が表示されました。
しっかりプログラムが動いているのが確認できました。
ここで入力したプログラムがどのような処理を行ったのか1つ1つ確認していきます。
まず入力欄を設置したindex.htmlですが、郵便番号のinputのname属性には、my_post_numberを指定しており、ここに入力した情報が入るようになります。
次にsubmit.phpですが、最初に
——————
<?php if(!empty($_REQUEST[‘my_post_number’])): ?>
…
<?php endif; ?>
——————
で郵便番号の入力欄に入力されたかどうかを判断し、入力されていた場合、その後の処理が実行されます。
もし郵便番号が入力された場合、その情報を受け取り、変数$post_numberに代入します。
——————
<?php $post_number = $_REQUEST[‘my_post_number’]; ?>
——————
次がテーマのメインとなる部分となります。
——————
<?php
if(preg_match(“/\A\d{3}[-]\d{4}\z/”, $post_number)){
echo ‘郵便番号:〒’ . $post_number;
}else{
echo ‘※郵便番号を正しくご記入ください’;
}
?>
——————
最初にpreg_matchで入力した情報が、指定した形式かどうかを判定しています。
その指定した形式というのが、preg_match()のカッコ内に入力しました/\A\d{3}[-]\d{4}\z/です。
最初と最後にある/と/が、正規表現であることを示しています。
そして\Aは文の始め、\zは文の終わりをあらわしています。
次に\dですが、こちらは整数を表しており、dのあとの{}の中に連続して使用する整数の回数を指定します。
今回の場合ですと最初に\d{3}となっているので、整数3文字の入力を求められており、次の\d{4}は整数4文字の入力を求めています。
最後に真ん中にある[-]はハイフンを表しています。
このように判定し、条件にあえば入力した郵便番号が表示され、合わなければ「※郵便番号を正しくご記入ください」が表示されるようになります。
今回の場合ですと3文字の整数と4文字の整数の間には、ハイフンが入らないと条件には合わないということになります。
他にも色々なパターンがあり、検索すると正規表現の組み方が出てきますので一度調べてみると勉強になるかと思います。
参考:preg_match
参考:PHP: preg_match()
headerを使ったページ遷移

次にページ遷移について取り上げます。
通常のページ遷移ですとaタグを使った方法が、まず思い浮かぶかと思いますがheader()を使います。
まずはPHPファイルに以下プログラムを入力してみます。
PHPファイルは新しく作成しても良いですし、以前作成したsample.phpを使ってもかまいません。
——————
<?php
header(‘Location: https://www.yahoo.co.jp/’);
exit();
?>
——————
上書き保存をし、ブラウザで表示を確認してみます。
すると指定したURLに自動的に遷移します。
上記の例ですとyahooのホームページのURLを指定しましたので、sample.phpにアクセスしますとyahooのホームページへ転送されます。
こちら入力したheader()によって起こっており、header()はHTTPヘッダを送信するために使用されます。
HTTPとはサイトのURLにも含まれていますが、ウェブサイトはHTTP通信というのを使用しています。
その通信の際にheaderとbodyで分かれて送信されますが、その内のheaderの情報を送信するのがheader()です。
今回の場合ですとheader()のカッコの中にLocationを指定しているので、その情報が送信されページ遷移されました。
その他の用途でも使うことができ、404のエラーコードの送信やファイルのダウンロードの際にファイル形式を認識させたりすることもできます。
色々な用途で使えますので、その都度調べてプログラムを組む方が良いかもしれません。
参考:header
剰余算でプログラムを組む

剰余算についてですが、「【第五回】PHPでシステム開発を実践!基本的な構文②」で取り上げまして、今回は割り算の余りを使って1行ごとに背景色を付けていくようなプログラムを組んでみます。
まずは剰余算のおさらいからしてみましょう。
以下プログラムを入力してみます。
——————
<?php
$result = 10 % 3;
echo $result;
?>
——————
上書き保存をし、ブラウザで表示を確認してみます。
上記の例ですと10÷3の余りですので、1と表示されていれば問題ありません。
3で割りますと余りは0、1、2の3つが順番に出てきます。
この仕組みを利用して、1行ごとに背景色を付けるプログラムを組んでみます。
まずはHTMLで表を作ってみます。
——————
<table>
<tr style=”background-color: #ccc”>
<td>1行目</td>
</tr>
<tr>
<td>2行目</td>
</tr>
<tr style=”background-color: #ccc”>
<td>3行目</td>
</tr>
<tr>
<td>4行目</td>
</tr>
</table>
——————
上書き保存をし、ブラウザで表示を確認してみます。
HTMLだけで1行ごとにstyle属性を使い、背景色を付けてみました。
こちら行数が少なければまだ良いですが、行数が増えますと手間になります。
そこでPHPで繰り返し処理と組み合わせて、プログラムを組んでみます。
繰り返し処理については「【第七回】PHPでシステム開発を実践!基本的な構文④”繰り返し処理や演算子”」で取り上げていますので、もし分からない方はご確認下さい。
それでは以下のようにプログラムを組んでみます。
——————
<table>
<?php for($i = 1; $i <= 10; $i++): ?>
<?php if($i % 2 === 1): ?>
<tr style=”background-color: #ccc”>
<?php else: ?>
<tr>
<?php endif; ?>
<td><?php echo $i; ?>行目</td>
</tr>
<?php endfor; ?>
</table>
——————
上書き保存をし、ブラウザで表示を確認してみます。
1行ごとに背景色が付いていますね。
それでは1つ1つプログラムを確認してみます。
最初にfor文を使い、1回目から10回1つずつ繰り返し処理を行うと指定することによりfor文で囲まれたプログラムを10回処理します。
——————
<?php for($i = 1; $i <= 10; $i++): ?>
…
<?php endfor; ?>
——————
次にif文で$iに入っている数値(行数)を2で割り、余りが1だった場合にif文で囲まれたプログラムを処理します。
その条件に当てはまらない場合は、else以降の処理が行われます。
——————
<?php if($i % 2 === 1): ?>
…
<?php else: ?>
…
<?php endif; ?>
——————
余りが1だった場合の処理ですが、style属性を指定しているtrタグがセットされるようにし、その他の場合はstyle属性がないtrタグがセットされるようにしています。
そのため余りが1の場合は背景色が付くようになります。
endif以降は、余りがいくつでも関係なく表示される〇行目というテキストが表示されるようにします。
〇には$iが表示されるようにしています。
今回は簡易的なものでしたのstyle属性を使いましたが、classを指定し、CSSでスタイルを指定してもかまいません。
仕事・働き方に悩んでいたら。『Salad』が強みを活かす職のサポートをします
まとめ

今回はheader()を使ったページ遷移や剰余算を使った背景色表示を取り上げました。
header()や剰余算は他の用途でも使うことができ、使い方次第ではより複雑なプログラムを組むこともできます。
この機会にぜひ調べていただけましたら幸いです。
【第二回】ノーコードシステム開発で実践!フロントエンド作り
【第三回】ノーコードシステム開発で実践!求人情報登録フォーム作り
【第四回】ノーコードシステム開発で実践!レスポンシブ対応
【第五回】ノーコードシステム開発で実践!データベース設定
【第六回】ノーコードシステム開発で実践!記事投稿画面作り1
【第七回】ノーコードシステム開発で実践!記事投稿画面作り2
【第八回】ノーコードシステム開発で実践!ログイン機能作り
【第九回】ノーコードシステム開発で実践!新規登録機能作り
【第十回】ノーコードシステム開発で実践!検索機能作り
【第十一回】PHPでシステム開発を実践!フォームでのPHPの使い方[第1回]
【第十二回】PHPでシステム開発を実践!フォームでのPHPの使い方[第2回]
【第十三回】PHPでシステム開発を実践!基本的な構文⑩header()と剰余算を使った背景色表示