我有一个关于 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
( docs ),则不需要打开输入流,这是由于 PHP 5.2 之前处理 php://stdin
时的错误而推荐的.1 ( docs ).
$input = "";
while($input == "") {
echo "Please enter : ";
$input = fread(STDIN, 10000);
}
还要记住 STDIN
、STDOUT
、STDERR
是已经定义的系统常量。您不应将这些名称用于您自己的常量。
关于stdin - 如何在新输入之前清除 php STDIN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13489128/