如何在新输入之前清除php STDIN?

时间:2012-11-21 08:28:35

标签: stdin php

我对php-cli有一个不高兴的问题。

我正在使用它:

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

问题是:

如果我输入超过80个字符,比如说100个字符,则会将20个额外字符添加到下一个字符中。

如何在每次输入之前“清除”STDIN?

1 个答案:

答案 0 :(得分:2)

length的{​​{1}}参数设置为更高的值(即1024,2048,10000) - 它确定fread()读取的数据的最大长度。如果您只需要最多80个字符,请在阅读后检查并在需要时使用fread()缩短。如果使用substr()docs),则不需要打开输入流,因为处理STDIN到PHP 5.2.1之前存在错误(docs )。

php://stdin

另请注意$input = ""; while($input == "") { echo "Please enter : "; $input = fread(STDIN, 10000); } STDINSTDOUT已定义系统常量。您不应该将这些名称用于您自己的常量。