интерфейс командной строки — PHP: добавление поддержки клавиш со стрелками к STDIN / обработка одного символа

В 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 просто зависает, пока пользователь не введет клавишу ввода.

5

Решение

Нет пути с чистым PHP: http://php.net/fgetc (см. комментарии)

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]