Как я могу очистить стандартный ввод php перед новым вводом?


У меня есть вопрос nooby о php-cli.

Я использую это:

define("STDIN", fopen('php://stdin','r'));
$input = "";
while($input == "") {
   echo "Please enter : ";
   $input = fread(STDIN, 80);
}

Проблема в том, что:

Если я введу более 80 символов, скажем 100, 20 дополнительных символов будут добавлены к следующему.

Как я могу "очистить" стандартный ввод данных перед каждым вводом?

 4
Author: iizno, 2012-11-21

1 answers

Установите length аргумент fread() на большее значение (т.Е. 1024, 2048, 10000) - он определяет максимальную длину данных, считываемых fread(). Если вам нужно всего до 80 символов, то проверьте это после прочтения и при необходимости сократите с помощью substr(). Вам не нужно открывать входной поток, если вы используете STDIN ( документы), который рекомендуется из-за ошибок в обработке php://stdin до PHP 5.2.1 (документы).

$input = "";
while($input == "") {
   echo "Please enter : ";
   $input = fread(STDIN, 10000);
}

Также имейте в виду STDIN, STDOUT, STDERR уже определены системные константы. Вы не должны использовать эти имена для своих собственных констант.

 2
Author: Marcin Orlowski, 2017-09-24 11:32:41