我有一个关于php-cli的初学者问题。
我正在使用以下代码:
define("STDIN", fopen('php://stdin','r'));
$input = "";
while($input == "") {
echo "Please enter : ";
$input = fread(STDIN, 80);
}
问题是:
如果我输入超过80个字符,比如100个字符,那么多出来的20个字符会被添加到下一个输入中。
我该如何在每次输入之前“清除”STDIN?
将fread()
的length
参数设置为更高的值(例如1024、2048、10000)-它确定了fread()
读取的数据的最大长度。如果您只需要80个字符,那么在读取后使用substr()
缩短即可。如果您使用STDIN
(文档),则无需打开输入流,因为由于对php://stdin
的处理错误,建议使用此方法,直到PHP 5.2.1版本为止(文档)。
$input = "";
while($input == "") {
echo "Please enter : ";
$input = fread(STDIN, 10000);
}
请注意,STDIN
、STDOUT
和STDERR
已经被定义为系统常量。您不应该使用这些名称来定义自己的常量。
fread
之前清除STDIN
是没有必要的,对吗? - shadyyxSTDIN
已经默认定义为fopen('php://stdin','r')
。不需要再次打开它。http://php.net/manual/en/wrappers.php.php - deceze