preg_match関数
入力された文字列が正規表記で指定した形式に該当するかをチェック。
郵便番号が正しく入力されているかをチェック
それでは早速、作ってみましょう
postcode-input.php
<?php require ‘header.php’; ?> <p>7桁の郵便番号を「ハイフン」なしで入力してください</p> <form action=”postcode-output.php” method=”post”> <input type=”text” name=”postcode“> <input type=”submit” value=”確定”> </form> <?php require ‘footer.php’; ?> | <input>タグを用いてテキストボックスを作ります。name属性の値(リクエストパラメータ名)はpostcodeとしました。 |
postcode-output.php
<?php require ‘header.php’; ?> <?php $postcode = $_REQUEST[‘postcode’]; if (preg_match(‘/^[0-9]{7}$/’, $postcode)){ echo ‘郵便番号’ , $postcode , ‘を確認できました’; } else { echo ‘読み取れません。7桁になってますか?適切な形式になってますか?ご確認ください’; } ?> <?php require ‘footer.php’; ?> | 「書式」preg_match(パターン, 入力文字列) 引数に指定したパターンに入力文字列が合致すると、この関数は「1」を返します。合致しなかった場合に「0」を返します。 if文などの条件式でpreg_match関数を使った場合、「1」はTRUE、「0」はFALSEになります。 ➀^:行頭(キーボードではひらがなの「へ」で入力) ➁[0-9]:0~9までの数字1文字 ➂{7}:直前の文字が7文字続く ④$:行末を示す |
郵便番号、ハイフンあり形式を作ろう
それでは早速、作ってみましょう
postcode-input2.php
<?php require ‘header.php’; ?> <p>7桁の郵便番号を「ハイフンあり」で入力してください</p> <form action=”postcode-output2.php” method=”post“> <input type=”text” name=”postcode”> <input type=”submit” value=”確定”> </form> <?php require ‘footer.php’; ?> | 「ハイフンあり」に変更しています。またactionでの送信先もpostcode-output2.phpに変更しています。 |
postcode-output2.php
<?php require ‘header.php’; ?> <?php $postcode = $_REQUEST[‘postcode’]; if (preg_match(‘/^[0-9]{3}-[0-9]{4}$/’, $postcode)){ echo ‘郵便番号’ , $postcode , ‘を確認できました’; } else { echo ‘読み取れません。7桁になってますか?ハイフンは入れましたか?’; } ?> <?php require ‘footer.php’; ?> | ➀^:行頭 ➁[0-9]:0~9までの数字 ➂{3}:直前の文字が3文字続く。 ④-:ハイフン ⑤[0-9]:0~9までの数字 ⓺{4}:直前の文字が4文字続く ⑦$:行末を示す |
入力されたパスワードが適切かどうかを判定する
早速、作ってみましょう
password-input.php
<?php require ‘header.php’; ?> <p>パスワードを入力してください</p> <p>7文字以上で、英小文字、英大文字、数字を各1文字以上含むこと</p> <form action=”password-output.php” method=”post”> <input type=”password” name=”password”> <input type=”submit” value=”確定”> </form> <?php require ‘footer.php’; ?> | type属性をpasswordにすると、パスワード入力欄になり、入力した文字列が画面に表示されなくなります。 |
password-output.php
<?php require ‘header.php’; ?> <?php $password = $_REQUEST[‘password’]; if (preg_match(‘/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9]{7,}$/’, $password)){ echo ‘パスワード’ , $password , ‘を確認できました’; } else { echo ‘読み取れません。適切に入力してください’; } ?> <?php require ‘footer.php’; ?> | 7文字以上で英小文字、英大文字、数字を各1文字以上含むパスワードが適切と設定 ➀^ →行頭 ➁(?=.*[a-z]) →英小文字(aからz)を含む ➂(?=.*[A-Z])→英大文字(AからZ)を含む ④(?=.*[0-9])→数字(0から9)を含む ⑤{7,}→直前の文字が7文字以上続く ⓺$ →行末 |