PHP7.4.1におけるfgets関数とtrim関数について。
<?PHP
//①パターンAのtrim関数なし
echo 'なにか文字列を入力してください!';
$number = fgets(STDIN);
echo "{$number}ですね?";
//②パターンAのtrim関数あり
echo 'なにか文字列を入力してください!';
$number = fgets(STDIN);
$number = trim($number);
echo $number , "ですね?";
//③パターンB
echo 'なにか文字列を入力してください!';
$number = trim(fgets(STDIN));
echo $number . 'ですね?';
//①パターンAのtrim関数なし
echo 'なにか文字列を入力してください!';
$number = fgets(STDIN);
echo "{$number}ですね?";
//②パターンAのtrim関数あり
echo 'なにか文字列を入力してください!';
$number = fgets(STDIN);
$number = trim($number);
echo $number , "ですね?";
//③パターンB
echo 'なにか文字列を入力してください!';
$number = trim(fgets(STDIN));
echo $number . 'ですね?';
fgets関数を使うと、パラメータに指定したファイルから1行だけ文字列を読み込むことができます。
上記のブログラムではfgets関数のパラメータの部分にSTDINと記述しています。
なのでこの場合は、ターミナルに入力した文字列(1行分)を読み込んで、その戻り値を$numberに格納する、という処理になります。
例えば上記のプログラムを起動してターミナルに「12345」と入力した場合は、出力結果はそれぞれ以下のようになります。
①の出力結果
12345
ですね?
②の出力結果
12345ですね?
③の出力結果
12345ですね?
上記のように、fgets関数では指定したファイルから1行だけを読み込むので、戻り値を他の文字列と連結した場合には強制的に改行が入ります。
その改行を消したい場合は、②のようにfgets関数の戻り値をtrim関数で処理する必要があります。
trim関数は、パラメータに指定した文字列の先頭および末尾のホワイトスペース(改行を含む)を取り除く、という処理をおこないます。
fgets関数の戻り値にtrim関数の処理をおこなうと改行が取り除かれるので、$numberの値と文字列を連結した結果を改行なしの1行で出力することができます。
③のパターンは、②の別パターンの記述方法です。
③のパターンのように、関数はパラメータに別の関数を指定することもできます。
以上です。