Чтобы вывести цветной текст в bash, вы используете escape-последовательности ANSI .
Как вы выводите цветной текст в командной строке Windows, в частности, из PHP?
Скачайте 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 => по умолчанию
0 => черный
1 => синий
2 => зеленый
3 => aqua
4 => красный
5 => фиолетовый
6 => желтый
7 => светло-серый
8 => серый
9 => голубой
10 => светло-зеленый
11 => светлая аква
12 => светло-красный
13 => светло-фиолетовый
14 => светло-желтый
15 => белый
К сожалению, 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";
Похоже, что использование командной строки с открытым кодом не будет работать в командной строке Windows. Ответы на другие вопросы, связанные с этим, говорят, что вам нужно использовать Win32 API. Для PHP существует библиотека API Win32, однако в документации есть большой красный раздел, предупреждающий о том, что он является экспериментальным . YMMV.
Попробуй это:
echo chr(27); //Escape char. echo "5;31;47"; //Graphic mode blink red on white
У меня нет оболочки / php env под рукой, но это должно выводить именно то, что вы хотите.
Вы можете сделать это с расширением php-wcli. Это расширение использует собственные функциональные возможности Windows вместо стороннего эмулятора ansi. https://github.com/ZmotriN/php-wcli