对 PHP 的 Windows 命令行输出进行着色
要在 bash 中输出彩色文本,请使用 ANSI 转义序列。
如何在Windows命令行上输出彩色文本,特别是从PHP输出?
要在 bash 中输出彩色文本,请使用 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 => 水
4 => 红色
5 =>紫色
6 => 黄色
7 => 浅灰色
8 => 灰色
9 => 浅蓝色
10 => 浅绿色
11 => 浅水
12 => 浅红色
13 => 浅紫色
14 => 浅黄色
15 => 白色
自 Windows 10 1511 起,Windows 现在支持 ANSI 转义序列。您可以从 with 运行以下代码,如果您运行的是 Windows 10 1511 及更高版本,您将获得彩色结果。cmd
php
<?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
?>
我运行的是Windows 10 1903,下面的屏幕截图显示了我在cmd中的脚本输出:
对于完整的转义序列参考:
https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences