簡単なプログラムを作成してみよう

2009年3月26日(木)
須田 超一

関数によるチェック

 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は奥が深く、実務で使えるようになるには、セッション管理やデータベースとの連携など重要項目はまだまだたくさんありますので、ぜひチャレンジしてみてください。

株式会社ITコア R&Dグループリーダー/有限会社グローバルイーネットワーク 代表取締役

有限会社グローバルイーネットワーク代表取締役。ITコアでは、クラウドサービスやオープンソースの研究開発に従事。株式会社東芝で半導体メモリの開発やシステム開発を経験後、南カリフォルニア大学やボンド大学のビジネススクールで経営学を学びMBA取得。
ITと経営戦略を武器にして、多方面で事業活動を展開中。 2011年は、バルーンアート事業を立ち上げます。デジタルハリウッド講師(PHP/Ajax)。 アメブロはこちら

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています