着色来自PHP的Windows命令行输出
要在bash中输出彩色文本,请使用ANSI转义序列。
如何在Windows命令行输出彩色文本,特别是从PHP输出?
从以下网址下载dynwrap.dll:http://www.script-coding.com/dynwrap95.zip
然后将其解压缩到%systemroot%system32
目录,然后在命令行中运行以下命令:
regsvr32.exe "%systemroot%system32dynwrap.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 =>白色
不幸的是,在Windows命令提示符中原本不提供ANSI转义码。
但是你可以尝试:
在bash shell上它的作用就像一个魅力,甚至有一个php lib:http://sourceforge.net/projects/milcovlib/
如果这对你来说太过分了,你可以试试这个:
echo " 33[31mred 33[37mrn";
echo " 33[32mgreen 33[37mrn";
echo " 33[41;30mblack on red 33[40;37mrn";
这里是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命令提示符下使用普通转义码不起作用。 其他与此相关的SO问题的答案表示您需要使用Win32 API。 Win32 API库确实存在于PHP中,但是文档确实有一个很大的红色部分,警告它是实验性的 。 因人而异。
链接地址: http://www.djcxy.com/p/87387.html