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

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

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

Related of "Вывод строки из командной строки 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