とぎぷろべい

包丁研ぎとプログラミングと米国株投資についてのなんやかんや

fgets関数とtrim関数について(PHP)

f:id:feci:20210727001932j:plain

PHP7

 

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 . 'ですね?';

fgets関数を使うと、パラメータに指定したファイルから1行だけ文字列を読み込むことができます。

 

上記のブログラムではfgets関数のパラメータの部分にSTDINと記述しています。

なのでこの場合は、ターミナルに入力した文字列(1行分)を読み込んで、その戻り値を$numberに格納する、という処理になります。

 

 

例えば上記のプログラムを起動してターミナルに「12345」と入力した場合は、出力結果はそれぞれ以下のようになります。

 

①の出力結果

12345
ですね?

 

②の出力結果
12345ですね?

 

③の出力結果
12345ですね?

 

 

上記のように、fgets関数では指定したファイルから1行だけを読み込むので、戻り値を他の文字列と連結した場合には強制的に改行が入ります。

その改行を消したい場合は、②のようにfgets関数の戻り値をtrim関数で処理する必要があります。

 

trim関数は、パラメータに指定した文字列の先頭および末尾のホワイトスペース(改行を含む)を取り除く、という処理をおこないます。

fgets関数の戻り値にtrim関数の処理をおこなうと改行が取り除かれるので、$numberの値と文字列を連結した結果を改行なしの1行で出力することができます。

 

③のパターンは、②の別パターンの記述方法です。

③のパターンのように、関数はパラメータに別の関数を指定することもできます。

 

 

以上です。