PHP无需用户按返回键即可获取用户输入

时间:2011-03-10 01:25:41

标签: php command-line-interface stdin

您好我在CLI模式下使用PHP(命令行界面)

我想获取用户输入的密钥并立即将其提交给程序,而无需用户按返回键(Enter键) 所以例如,我希望能够立即打印用户输入的字母。因此,如果用户键入“a”,它会立即在命令提示符中显示“a”。我该怎么做?

 do {  
     $selection = fgetc(STDIN);  
 fwrite(STOUT, "$selection");
 } while ( trim($selection) == '' );  

2 个答案:

答案 0 :(得分:2)

有几种方法可以禁用输入缓冲:

http://www.mail-archive.com/php-general@lists.php.net/msg151195.html似乎有效:

exec("stty -icanon min 0 time 0");

其他一些建议如下:http://bugs.php.net/bug.php?id=34972stream_set_blocking(STDIN, false);例如无效

答案 1 :(得分:1)

在stdin上禁用缓冲或改为使用ncurses。