PHPプログラムで標準入力からインプットする方法はいくつかありますが、最も一般的なのは fgets(STDIN)
関数 を使用する方法です。
基本的な使い方:
PHP
<?php
echo "何か入力してください:";
$input = fgets(STDIN);
// 入力された内容を表示
echo "入力された内容は: " . $input;
?>
このコードを実行すると、ターミナル(コマンドプロンプト)に "何か入力してください:" と表示され、ユーザーが何かを入力してEnterキーを押すと、その入力内容が $input
変数に文字列として格納され、次の行で表示されます。
fgets(STDIN)
関数の特徴:
- 1行読み込み:
fgets()
は、指定されたファイルポインタ(ここではSTDIN
、標準入力)から1行読み込みます。改行文字 (\n
) を含む行末まで、または指定された長さまでの文字列を返します。 - 改行文字を含む: 読み込まれた文字列には、通常、ユーザーがEnterキーを押したときに生成される改行文字 (
\n
) が末尾に含まれます。そのため、後でこの改行文字を取り除く必要がある場合があります。
改行文字の処理:
fgets(STDIN)
で読み込んだ文字列の末尾にある改行文字を取り除くには、trim()
関数を使用するのが一般的です。
PHP
<?php
echo "名前を入力してください:";
$name = trim(fgets(STDIN));
echo "こんにちは、" . $name . "さん!\n";
?>
trim()
関数は、文字列の先頭と末尾にある空白文字(スペース、タブ、改行など)を取り除きます。
入力の型変換:
fgets(STDIN)
は常に文字列を返します。もし数値として扱いたい場合は、型変換を行う必要があります。
PHP
<?php
echo "年齢を入力してください:";
$ageString = trim(fgets(STDIN));
$age = (int)$ageString; // 文字列を整数にキャスト
if ($age >= 18) {
echo "成人です。\n";
} else {
echo "未成年です。\n";
}
?>
複数の入力を扱う場合:
複数の値を1行で入力させ、スペースなどで区切って処理する場合は、explode()
関数を使うことができます。
PHP
<?php
echo "2つの数値をスペース区切りで入力してください:";
$line = trim(fgets(STDIN));
$numbers = explode(' ', $line);
if (count($numbers) === 2 && is_numeric($numbers[0]) && is_numeric($numbers[1])) {
$num1 = (int)$numbers[0];
$num2 = (int)$numbers[1];
$sum = $num1 + $num2;
echo "合計は " . $sum . " です。\n";
} else {
echo "正しい形式で入力してください。\n";
}
?>
まとめ:
PHPで標準入力からインプットする基本的な方法は fgets(STDIN)
を使用することです。読み込まれた文字列には改行文字が含まれることが多いので、必要に応じて trim()
関数で取り除くことを覚えておきましょう。また、数値として扱いたい場合は適切な型変換を行ってください。複数の入力を扱う場合は explode()
関数が役立ちます。
0 件のコメント:
コメントを投稿