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()在需要时缩短使用。STDIN如果您使用( docs ),则不需要打开输入流,这是推荐的,因为在处理php://stdin高达 PHP 5.2.1 ( docs ) 时存在错误。

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

还要记住STDIN, STDOUT,STDERR是已经定义的系统常数。您不应将这些名称用于您自己的常量。

于 2012-11-21T09:44:52.373 回答