Я работаю над сценарием командной строки, который использует fread (для да / нет, …) и fgets (для проверки значений вручную, …).
Проблема в том, что если я ввожу больше … символов (\ n тоже символ), эти символы уже вводятся в следующую функцию fgets / fread.
Я попытался fflush (STDIN), но это не сработало. Я также попробовал stream_get_line (STDIN, 1024); это было рекомендовано кем-то в вопросе о том же самом, но затем я должен ввести почти бесконечное количество символов, пока программа не продолжится (я ухожу).
Как заставить PHP удалить клавиатурный буфер перед использованием fgets / fread?
Если ваш PHP скомпилирован с Readline модуль (это довольно часто), вы можете просто использовать readline()
http://php.net/manual/en/function.readline.php
$input = readline( 'Prompt: ' );
readline()
упрощает процесс чтения ввода с терминала.
Других решений пока нет …