簡単なプログラムを作成してみよう
関数によるチェック
PHPには、データの形式をチェックするたくさんの関数が用意されています。その中でも、入力チェック時に使えそうなものをピックアップしてみました。
まずは、調査系のものを紹介します。英数字かどうかを調べるctype_alnum、数値かどうかを調べるctype_digit、文字列の長さを調べるstrlenなどがあります。ユーザーが入力した値の妥当性を調べるには、前述の正規表現とあわせて使えるようにしておきたい関数です。
・ctype_alnum(http://jp2.php.net/manual/ja/function.ctype-alnum.php)
・ctype_digit(http://jp2.php.net/manual/ja/function.ctype-digit.php)
・strlen(http://jp2.php.net/strlen)
次は、置換・加工系です。入力値に対して、自動で変換処理をするときなどに使います。不必要な文字を削除したり置換したりするのに使うstr_replace、HTMLタグやPHPタグを削除するstrip_tags、入力値に改行文字がある場合、
タグに変換してくれるnl2br、不必要な空白文字を削除してくれるtrim、文字列の一部を切り出すsubstrなどがあります。
・str_replace(http://jp2.php.net/manual/ja/function.str-replace.php)
・strip_tags(http://jp2.php.net/manual/ja/function.strip-tags.php)
・nl2br(http://jp2.php.net/manual/ja/function.nl2br.php)
・trim(http://jp2.php.net/manual/ja/function.trim.php)
・substr(http://jp2.php.net/manual/ja/function.substr.php)
ここまで紹介してきた関数は、シングルバイト文字に対応してものです。PHPでは、マルチバイト文字(全角文字)に対応した関数も用意されています。文字列の長さを調べるmb_strlen、全角<=>半角の変換をしてくれるmb_convert_kanaなどがよく使われます。
・mb_strlen(http://jp2.php.net/manual/ja/function.mb-strlen.php)
・mb_convert_kana(http://jp2.php.net/manual/ja/function.mb-convert-kana.php)
・mb_substr(http://jp2.php.net/manual/ja/function.mb-substr.php)
そのほかのマルチバイト関数については、マルチバイト文字列関数(http://jp2.php.net/manual/ja/ref.mbstring.php)を参考にしてください。
誕生日を入力して星座を表示する
では、最後に本連載で学んだ事を総動員して、簡単なプログラムを作成しながら、PHPについて復習していきましょう。
ここでは、誕生日を入力すると星座を判定するプログラムを作ってみます(図3)。プログラム自体が、ダウンロードできますので、ぜひ参考にしてください(871_1.zip/2.21 KB)。
今回は、情報を入力するプログラムを「birthday.php」、結果を表示するプログラムを「birthdayResuult.php」とします。入力値は、名前と誕生日です。
未入力や日付の値が不正な場合にも対応できるようにプログラムを作ります。名前、誕生日にデータが入っていない状態で「送信」ボタンを押すと、次のようなエラーメッセージが出るようにします。
名前が入っていません
年のデータが入っていません
月のデータが入っていません
日のデータが入っていません
また、4月31日のように、存在しない日付を選んだ場合は、次のようなエラーが出るようにします。
日付の形式が違います
名前、誕生日データが問題ない場合は、図3のようなメッセージが出るようにします。
ここからは、ダウンロードしたプログラムソースを見ながら読んでください。入力画面であるbirthday.phpの誕生日入力インターフェースは加工のしやすさを考えてリストメニューにしました。ポイントはリストメニューを、for文で作成しているところです。
データを受け取るbirthdayResult.phpでは、空白チェック、文字の長さチェック(名前のみ)、日付のフォーマットチェックをif文で処理しています。日付の妥当性をチェックするcheckdate関数を利用して、月末の存在可否を評価するようにしてます。
入力チェックが終わったら、受け取った、月データと日付データの組み合わせで星座を選ぶようにします(switch文とif文を利用)。
いかがだったでしょうか。本連載を通して、PHPのプログラムがどうなっているか理解できたと思います。PHPは奥が深く、実務で使えるようになるには、セッション管理やデータベースとの連携など重要項目はまだまだたくさんありますので、ぜひチャレンジしてみてください。