PHP CLI, Windows 7 CMD и CLS / FF должны ладить. (Очистить Win7 CMD с PHP из CLI) - PullRequest
3 голосов
/ 26 декабря 2010

Хорошо, сейчас я везде искал способ сделать это, и, очевидно, никто в интернете не знает, что случилось. И под интернетом я подразумеваю область действия Google.

Я пишу терминальное приложение на PHP для запуска в PHP CLI в необычной командной строке Windows 7 (x64 Ultimate). В программе хочу очистить экран. Данные, отображаемые на экране, могут быть любым количеством символов, охватывающим любое количество строк. Я не хочу никаких взломов символов Backspace или инструкций по использованию возврата каретки. Я хочу очистить экран.

CMD имеет причудливую команду CLS, которая делает именно это. Итак, когда я запускаю строку PHP system('cls'); или любой другой вариант выполнения команды очистки экрана (включая тот ответ, в котором говорится, что system("command /C cls"); не работает), терминал выводит символ Венеры. Знак девушки, «перевернутая святая ручная граната», как бы вы это ни называли. Оказывается, это, по-видимому, какой-то способ показать символ перевода строки (который, если терминал действительно ведет себя так, как должен, очистит экран).

Почему PHP CLI считает, что показ CMD девушке прояснит экран, и как я могу получить CMD до на самом деле очистить? Я пытался отправить ему символ перевода строки, отправить ему символ девушки, отправить ему чипсы и печенье и все виды приятных вещей. Ничего не получалось. Таким образом, экран всегда будет оставаться неясным, что, как вы можете себе представить, может раздражать, когда вам нужно что-то перерисовать. В любом случае, ваша помощь приветствуется.

Ответы [ 4 ]

2 голосов
/ 19 марта 2011

Этот - единственный, но очень уродливый способ сделать это, который я нашел работающим до сих пор:

public function clearStdin()
{
    for ($i = 0; $i < 50; $i++) echo "\r\n";
}
1 голос
/ 19 декабря 2014

После долгих поисков я наконец-то нашел ответ, который работает для меня в Windows 7 и использует ANSI:

echo chr(27)."[H".chr(27)."[2J";

Это работает для меня в стандартной консоли, потому что я установил Ansicon ... если у вас возникли проблемы, вы можете попробовать Console2 .

Если вы распространяете CLI среди общественности, то это решение недостаточно, но для внутреннего использования оно может быть приемлемым (т. Е. Если вы можете использовать ANSI на всех машинах).

0 голосов
/ 04 мая 2016

После попытки найти решение этого вопроса и потратить почти час без удачи, ответ был прямо передо мной ...

Это немного старый метод skool для команд ASCII, который до сих пор работает в Windows DOS (в большинстве случаев) ... Я использовал его для изменения цвета вывода.

Если вы восьмеричная ссылка для управляющей клавиши "\ 033", тогда управляющий символ DOS "[" и код клавиши могут выполнять множество различных задач, таких как изменение цвета и ... очистка экрана:)

Используйте следующее, чтобы очистить экран в php как оператор echo (мне не удалось заставить system () работать с этой командой, однако мне достаточно echo).

echo "\033[2J"; //clears the screen
echo "\033[1;1H"; //resets pointer back to 1,1 (top, left)

Я действительно надеюсь, что это кому-то помогло:)

Дальнейшее чтение: http://www.robvanderwoude.com/ansi.php

Приветствие Dal

0 голосов
/ 19 октября 2011

Нашел простой способ, если вы запускаете PHP из командного файла (я использую XAMPP на Win7 x64 ultimate):

cls
@c:\xampp\php\php program_to_run.php

Этот пакетный файл очищает экран перед запуском PHP и даже не отображает командную строку снова из-за символа @ в начале строки. Результат: начиная с чистого экрана консоли!

Также вы можете использовать \ r для перехода к началу строки, поэтому, если вам нужно только перерисовать одну строку (например, индикатор прогресса), это может быть решением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...