Подтвердить что ты не робот

Вывод строки из командной строки Windows из PHP

Чтобы вывести цветной текст в bash, вы используете ANSI escape-последовательности.

Как вы выводите цветной текст в командной строке Windows, в частности из PHP?

4b9b3361

Ответ 1

Скачайте dynwrap.dll из: http://www.script-coding.com/dynwrap95.zip

Затем извлеките его в каталог %systemroot%\system32, а затем запустите следующую команду в командной строке:

regsvr32.exe "%systemroot%\system32\dynwrap.dll"

Вы получите сообщение об успешном завершении, которое означает, что зарегистрирован файл dynwrap.dll.

Затем вы можете использовать его следующим образом:

$com = new COM('DynamicWrapper');

// register needed features
$com->Register('kernel32.dll', 'GetStdHandle', 'i=h', 'f=s', 'r=l');
$com->Register('kernel32.dll', 'SetConsoleTextAttribute', 'i=hl', 'f=s', 'r=t');

// get console handle
$ch = $com->GetStdHandle(-11);

Пример:

$com->SetConsoleTextAttribute($ch, 4);
echo 'This is a red text!';
$com->SetConsoleTextAttribute($ch, 7);
echo 'Back to normal color!';

коды цветов:
7 = > default
0 = > черный
1 = > синий
2 = > зеленый
3 = > aqua
4 = > красный
5 = > фиолетовый
6 = > желтый
7 = > светло-серый
8 = > серый
9 = > светло-голубой
10 = > светло-зеленый
11 = > светлая аква
12 = > светло-красный
13 = > светло-фиолетовый
14 = > светло-желтый
15 = > белый

Ответ 2

Коды escape-кода ANSI, к сожалению, недоступны в командной строке Windows, изначально.

Однако вы можете попробовать:

В оболочке bash он работает как шарм, и для него есть даже php lib: http://sourceforge.net/projects/milcovlib/

Если это вас переполняет, вы можете попробовать следующее:

echo "\033[31mred\033[37m\r\n";
echo "\033[32mgreen\033[37m\r\n";
echo "\033[41;30mblack on red\033[40;37m\r\n";

Вот список цветовых кодов bash:

$black = "33[0;30m";
$darkgray = "33[1;30m";
$blue = "33[0;34m";
$lightblue = "33[1;34m";
$green = "33[0;32m";
$lightgreen = "33[1;32m";
$cyan = "33[0;36m";
$lightcyan = "33[1;36m";
$red = "33[0;31m";
$lightred = "33[1;31m";
$purple = "33[0;35m";
$lightpurple = "33[1;35m";
$brown = "33[0;33m";
$yellow = "33[1;33m";
$lightgray = "33[0;37m";
$white = "33[1;37m";

Ответ 3

Похоже, что использование простых кодов эвакуации не будет работать в командной строке Windows. Ответы на другие вопросы SO, связанные с этим, говорят о необходимости использования Win32 API. Для PHP существует библиотека API Win32, но документация имеет большой красный раздел, предупреждающий, что это экспериментальный, YMMV.

Ответ 4

Попробуйте следующее:

echo chr(27); //Escape char.
echo "5;31;47"; //Graphic mode blink red on white 

У меня нет оболочки /php env под рукой, но это должно выводить именно то, что вы хотите.

Ответ 5

Вы можете сделать это с расширением php-wcli. Это расширение использует собственные функциональные возможности Windows вместо стороннего эмулятора ansi. https://github.com/ZmotriN/php-wcli