PHP Получить ввод пользователя без нажатия клавиши возврата - PullRequest
3 голосов
/ 10 марта 2011

Привет! Я использую PHP в режиме CLI (интерфейс командной строки).

Я хотел бы получить ключ, который вводит пользователь, и немедленно отправить его в программу, не нажимая клавишу возврата (Введите ключ) Так, например, я хотел бы, чтобы он напечатал букву, которую пользователь вводит немедленно.Поэтому, если пользователь вводит «а», он сразу показывает «а» в командной строке.Как бы я это сделал?

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

Ответы [ 2 ]

2 голосов
/ 10 марта 2011

Есть несколько способов отключить буферизацию ввода:

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);, например, не имеет никакого эффекта

1 голос
/ 10 марта 2011

Либо отключите буферизацию на stdin, либо используйте вместо этого ncurses.

...