はじめに
fgets(STDIN)で標準入力の値を取得すると改行されることを知らなくてハマったときのこと
こうなってしまう
入力
Hello
$input = fgets(STDIN);
$length = strlen($input);
echo $input . ' is ' . $length . ' letters.';
出力
Hello
is 6 letters.
対策
そのままだと改行されてしまうし文字数も合わないので改行コードをrtrim()で消す
rtrim()は引数に指定した文字列の最後から空白やタブ、改行などを取り除いてくれる。
$input = rtrim(fgets(STDIN));
printf('%s is %d letters.', $input, mb_strlen($input, 'UTF-8'));
出力
Hello is 5 letters.