4

php-cli について質問があります。

私はこれを使用しています:

define("STDIN", fopen('php://stdin','r'));
$input = "";
while($input == "") {
   echo "Please enter : ";
   $input = fread(STDIN, 80);
}

問題は:

80 文字以上、たとえば 100 文字を入力すると、20 文字分の余分な文字が次の文字に追加されます。

各入力の前に STDIN を「クリア」するにはどうすればよいですか?

4

1 に答える 1

2

lengthの引数fread()をより高い値 (つまり、1024、2048、10000) に設定します。これにより、 によって読み取られるデータの最大fread()長が決まります。最大 80 文字が必要な場合は、読み取り後に確認しsubstr()、必要に応じて短くしてください。PHP 5.2.1 ( docs ) までの処理にバグがあるため、推奨されているSTDIN( docs ) を使用する場合は、入力ストリームを開く必要はありません。php://stdin

$input = "";
while($input == "") {
   echo "Please enter : ";
   $input = fread(STDIN, 10000);
}

またSTDIN、 、STDOUTSTDERRは既に定義されているシステム定数であることにも注意してください。これらの名前を独自の定数に使用しないでください。

于 2012-11-21T09:44:52.373 に答える