要在bash中输出彩色文字,请使用ANSI escape sequences。
如何在Windows命令行上输出彩色文本,特别是从PHP输出?
答案 0 :(得分:10)
从http://www.script-coding.com/dynwrap95.zip
下载dynwrap.dll然后将其解压缩到%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 =>白
答案 1 :(得分:6)
ANSI转义码在Windows命令提示符中不可用。
但是你可以尝试:
在bash shell上,它就像一个魅力,甚至还有一个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";
答案 2 :(得分:4)
ANSI转义序列。 您可以使用php从cmd运行以下代码,如果您运行的是Win10 1511及更高版本,则将以彩色显示结果。
<?php
echo "\033[31mRed\n". // Red Color Text
"\033[32mGreen\n". // Green Color Text
"\033[33mYellow\n". // Yellow Color Text
"\033[34mBlue\n". // Blue Color Text
"\033[37mWhite\n"; // White Color Text
?>
我正在运行Win 10 1903,下面的屏幕快照显示了我在cmd中的脚本输出:
有关完整的转义序列参考: https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences
答案 3 :(得分:2)
使用普通转义码似乎无法在Windows命令提示符下运行。与此相关的the other SO questions上的答案表示您需要使用Win32 API。 PHP确实存在Win32 API库,但是the documentation确实有一个大的红色部分警告,它是 experimental 。 YMMV。
答案 4 :(得分:1)
你可以用php-wcli扩展名来做。此扩展使用本机Windows功能而不是第三方ansi模拟器。 https://github.com/ZmotriN/php-wcli
答案 5 :(得分:0)
试试这个:
echo chr(27); //Escape char.
echo "5;31;47"; //Graphic mode blink red on white
我手上没有shell / php环境,但这应该输出你想要的。
答案 6 :(得分:-1)
在 Windows 10(编译 19042.1110)PHP 7.4 上,这对我有用:
echo("\x1b[31m Memory Testing \x1b[0m \n\r");
转义序列是“\x1b[”
"\x1b[31m" 代表红色
"\x1b[0m" 表示“正常”颜色
颜色代码为here
希望能帮到你。