Как мне удалить текст из консоли на PHP?

#php #windows #linux #command-line #php-5.3

#php #Windows #linux #командная строка #php-5.3

Вопрос:

Моя цель — вывести процент выполнения обновления на консоль (как в Linux, так и в Windows). В настоящее время я просто распечатываю процентное значение каждые 10%, но я бы предпочел, чтобы оно обновлялось каждые 1%, не заполняя экран процентами.

Возможно ли удалить текст, который вы записали в консоль на PHP?

Комментарии:

1. В качестве альтернативы используйте print "17%r"; . Если вы используете возврат каретки r вместо перевода строки n , курсор будет помещен в начало строки, что позволяет перезаписать его при следующем выводе.

2. марио: Спасибо! Это отвечает на вопрос, который я еще не задавал 🙂

Ответ №1:

 echo chr(8);
  

выведет символ обратного пробела.

Комментарии:

1. Приятно! Это работает в Windows CMD. Будет ли это работать в Linux?

Ответ №2:

очень просто Обратите внимание на приведенный ниже пример

 $removeLine = function (int $count = 1) {
    foreach (range(1,$count) as $value){
        echo "rx1b[K"; // remove this line
        echo "33[1A33[K"; // cursor back
    }
};

echo "-----------------------------n";
echo "---------  Start  -----------n";
echo "-----------------------------n";
sleep(2);
$removeLine(3);

echo 'hi';
sleep(2);
$removeLine();

echo 'how are you ?';
die();
  

Ответ №3:

Смотрите Zend_ProgressBar

Ответ №4:

Console_ProgressBar от PEAR полезен для такого варианта использования.

Чтобы полностью очистить консоль, вы можете использовать:

 if($_SERVER['SHELL']) {
  print chr(27) . "[H" . chr(27) . "[2J";
}
  

это немного проще, чем отслеживать, сколько символов нужно заменить пробелом.