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

标签 stdin php

我有一个关于 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);
}

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

关于stdin - 如何在新输入之前清除 php STDIN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13489128/

相关文章:

php - 如何构建统计图?

linux - 在Linux中,为什么所有进程都有一个global/dev/stdin文件?

perl - 阅读文本的好方法是什么?

php - 如何获得在 PHPmyadmin 中运行的 mysql 脚本,以在 PHP mysql 查询中运行?

php - 从PHP Docker运行Python脚本

php - 从 bbCode 标签中提取 ID 号并从数据库中检索数据

php - 创建网站的移动快捷方式

python - 如何在不编写额外代码的情况下使用 Python 读取 "-"(破折号)作为标准输入?

python - 知道 python 脚本在由 crontab 启动时可以从 stdin 读取一些东西

使用 gradle run 启动应用程序时,java.util.scanner 抛出 NoSuchElementException