#4 PHPで学ぶ標準入力の基本
PHPにおける標準入力は、Webサイト向けの言語という性質上、他の言語とは少し違った位置づけになっています。この記事では、PHPで利用者からの入力を受け取る基本的な方法を解説します。
PHPの入力はWebフォームが基本
PHPは本来、Webサイトの裏側で動く言語のため、利用者からの入力は多くの場合、キーボードからの直接入力ではなく、Webページ上の入力フォームを通じて受け取ります。フォームから送られた内容は、$_POSTや$_GETという特別な変数に自動的に格納されます。
$name = $_POST['name'] ?? '';
フォームの項目が存在しない場合もあるため、??で既定値を用意しておくと安全です。
コマンドラインでの入力
学習用にターミナル上でPHPを動かす場合は、fgetsという機能を使うことで、キーボードからの入力を受け取れます。
echo "名前を入力してください: ";
$name = trim(fgets(STDIN));
fgetsで読み込んだ内容には改行文字が含まれるため、trimという機能で取り除くのが定番です。
数値として受け取る
数値として使いたい場合は、(int)のように型名をかっこで囲んで前に付けることで変換できます。
$age = (int) trim(fgets(STDIN));
数字ではない文字列を渡した場合は0になるため、厳密なチェックが必要な場面ではis_numeric()を先に確認するとより安全です。
複数の値をまとめて受け取る
スペース区切りで複数の値が入力される場合は、explodeで分割してから、それぞれを変換します。
$line = trim(fgets(STDIN)); // 例: "3 5"
$numbers = array_map('intval', explode(' ', $line));
echo array_sum($numbers);
PHPならではの注意点
PHPの入門書やチュートリアルを見ていると、「Webフォームからの入力」を前提にした説明と、「コマンドラインからの入力」を前提にした説明が混在していることがあります。今どちらの文脈の説明を読んでいるのかを意識しておくと、混乱を避けられます。Webフォームからの入力は、悪意のあるデータが送られてくる可能性も考慮し、そのまま信用せず検証してから使うことも重要です。
まとめ
PHPの入力は、Web開発ではフォーム経由の$_POST・$_GET、コマンドラインではfgets(STDIN)が基本です。どちらの場面を学んでいるのかを意識して学習を進めましょう。
本ページはプロモーションを含みます。
参考書籍(PR)
PHPをもっと学びたい方には「10日でおぼえるPHP入門教室 第4版」がおすすめです。
PR
コードを書かずに自動化したい方へ
「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿