【问题标题】:PHP Get user input without user having to press return keyPHP获取用户输入而无需用户按回车键
【发布时间】:2011-07-12 09:12:04
【问题描述】:

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

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

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

【问题讨论】:

  • 只是好奇 php 命令行的人是什么,我在 youtube 上看到有人这样做,这是一种偏好吗?
  • 通常我使用 php 来做 web 开发,但这更像是一个个人项目,我不需要摆弄 html(不是说这是一个真正的问题)我只是想要这个任务感觉它就像一个真正的程序一样运行,而不是调用一个 html 页面。

标签: php command-line-interface stdin


【解决方案1】:

要么禁用标准输入上的缓冲,要么使用 ncurses。

【讨论】:

  • 如何禁用缓冲?
  • 我不确定,主要是因为我从来没有这样做过(我通常使用 ncurses 或 readline 进行用户输入)。
【解决方案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=34972 但是stream_set_blocking(STDIN, false); 例如没有效果

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    • 1970-01-01
    • 2016-05-13
    相关资源
    最近更新 更多