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 просто зависает, пока пользователь не введет клавишу ввода.
1 answers
Невозможно с чистым PHP: http://php.net/fgetc (см. Комментарии)