PHP: Добавление поддержки клавиш со стрелками в Стандартный ввод/Обработку одного символа


В PHP я могу читать входные данные из программы командной строки со следующим кодом

$stream = STDIN;
$test = fgets($stream);
echo $test;

Это хорошо работает для простого ввода. Однако, если я попытаюсь использовать что-то вроде клавиши со стрелкой назад, моя оболочка будет выглядеть следующим образом

This is a test^[[D^[[D^[[D    

Т.е. в оболочку отправляется escape-последовательность клавиш со стрелками ^[[D. PHP сам интерпретирует клавиши со стрелками - т.Е. Вводит это

This is a test^[[D^[[D^[[D^[[Dsecond test     

Выведет это

This is a second test

Однако я бы хотел, чтобы оболочка "правильно" (т.Е. Делала то, что Я думаю, что они должны делать, а не буквально то, что я отправил) интерпретировать клавиши со стрелками, чтобы точка вставки перемещалась во время ввода.

Возможно ли это в PHP? С расширением? Без продления? Я пробовал варианты fgets($stream, 1), но похоже, что PHP просто зависает, пока пользователь не введет клавишу ввода.

Author: Alan Storm, 2016-02-15

1 answers

Невозможно с чистым PHP: http://php.net/fgetc (см. Комментарии)

 1
Author: Unirgy, 2016-02-15 22:55:00