如何为 PHP CLI 启用颜色?
How to enable color for PHP CLI?
如何启用 CLI 输出的颜色?
下面的是 运行 on Ubuntu.
如果您看到屏幕截图,显然终端已启用颜色。而且,如果我调用 echo
,它不会为结果着色,但如果我使用 echo -e
,它会着色。
我查看了 echo
的手册页,-e
表示 启用反斜杠转义的解释
如何为 PHP CLI 启用此选项?
首先我们使用转义字符,这样我们就可以实际定义输出颜色。这是通过 3
(\e) 完成的。然后我们用[31m
打开颜色语句。在这种情况下为红色。
“一些彩色文本”将是以不同颜色输出的文本。之后我们必须用 3[0m
.
结束颜色语句
php -r 'echo "3[31m some colored text 3[0m some white text \n";'
比较懒
function colorLog($str, $type = 'i'){
switch ($type) {
case 'e': //error
echo "3[31m$str 3[0m\n";
break;
case 's': //success
echo "3[32m$str 3[0m\n";
break;
case 'w': //warning
echo "3[33m$str 3[0m\n";
break;
case 'i': //info
echo "3[36m$str 3[0m\n";
break;
default:
# code...
break;
}
}
可重复使用形式的更清洁解决方案 class。
PHP Class:
class CLI
{
// this method requires one variable. the second, color, is optional
function cout_color($content, $color=null)
{
// if a color is set use the color set.
if(!empty($color))
{
// if our color string is not a numeric value
if(!is_numeric($color))
{
//lowercase our string value.
$c = strtolower($color);
}
else
{
// check if our color value is not empty.
if(!empty($color))
{
$c = $color;
}
else
{
// no color was set so lets pick a random one...
$c = rand(1,14);
}
}
}
else // no color argument was passed, so lets pick a random one w00t
{
$c = rand(1,14);
}
$cheader = '';
$cfooter = "3[0m";
// let check which color code was used so we can then wrap our content.
switch($c)
{
case 1:
case 'red':
// color code header.
$cheader .= "3[31m";
break;
case 2:
case 'green':
// color code header.
$cheader .= "3[32m";
break;
case 3:
case 'yellow':
// color code header.
$cheader .= "3[33m";
break;
case 4:
case 'blue':
// color code header.
$cheader .= "3[34m";
break;
case 5:
case 'magenta':
// color code header.
$cheader .= "3[35m";
break;
case 6:
case 'cyan':
// color code header.
$cheader .= "3[36m";
break;
case 7:
case 'light grey':
// color code header.
$cheader .= "3[37m";
break;
case 8:
case 'dark grey':
// color code header.
$cheader .= "3[90m";
break;
case 9:
case 'light red':
// color code header.
$cheader .= "3[91m";
break;
case 10:
case 'light green':
// color code header.
$cheader .= "3[92m";
break;
case 11:
case 'light yellow':
// color code header.
$cheader .= "3[93m";
break;
case 12:
case 'light blue':
// color code header.
$cheader .= "3[94m";
break;
case 13:
case 'light magenta':
// color code header.
$cheader .= "3[95m";
break;
case 14:
case 'light cyan':
// color code header.
$cheader .= "3[92m";
break;
}
// wrap our content.
$content = $cheader.$content.$cfooter;
//return our new content.
return $content;
}
}
基本用法:
//create a new object
$cli = new CLI();
//example string
$text = 'Success!';
//color via class color id
$text = $cli->cout_color($text, 2);
//color via string name
//$text = $cli->cout_color($text, 'green');
//for random color, ignore the second parameter.:
//$text = $cli->cout_color($text);
echo $text;
修改为您的项目要求。祝你好运。
经过一些实验,我做了这些代码:
function formatPrint(array $format=[],string $text = '') {
$codes=[
'bold'=>1,
'italic'=>3, 'underline'=>4, 'strikethrough'=>9,
'black'=>30, 'red'=>31, 'green'=>32, 'yellow'=>33,'blue'=>34, 'magenta'=>35, 'cyan'=>36, 'white'=>37,
'blackbg'=>40, 'redbg'=>41, 'greenbg'=>42, 'yellowbg'=>44,'bluebg'=>44, 'magentabg'=>45, 'cyanbg'=>46, 'lightgreybg'=>47
];
$formatMap = array_map(function ($v) use ($codes) { return $codes[$v]; }, $format);
echo "\e[".implode(';',$formatMap).'m'.$text."\e[0m";
}
function formatPrintLn(array $format=[], string $text='') {
formatPrint($format, $text); echo "\r\n";
}
//Examples:
formatPrint(['blue', 'bold', 'italic','strikethrough'], "Wohoo");
formatPrintLn(['yellow', 'italic'], " I'm invicible");
formatPrintLn(['yellow', 'bold'], "I'm invicible");
只需复制并粘贴上面的代码,然后...享受 :)
如何启用 CLI 输出的颜色? 下面的是 运行 on Ubuntu.
如果您看到屏幕截图,显然终端已启用颜色。而且,如果我调用 echo
,它不会为结果着色,但如果我使用 echo -e
,它会着色。
我查看了 echo
的手册页,-e
表示 启用反斜杠转义的解释
如何为 PHP CLI 启用此选项?
首先我们使用转义字符,这样我们就可以实际定义输出颜色。这是通过 3
(\e) 完成的。然后我们用[31m
打开颜色语句。在这种情况下为红色。
“一些彩色文本”将是以不同颜色输出的文本。之后我们必须用 3[0m
.
php -r 'echo "3[31m some colored text 3[0m some white text \n";'
比较懒
function colorLog($str, $type = 'i'){
switch ($type) {
case 'e': //error
echo "3[31m$str 3[0m\n";
break;
case 's': //success
echo "3[32m$str 3[0m\n";
break;
case 'w': //warning
echo "3[33m$str 3[0m\n";
break;
case 'i': //info
echo "3[36m$str 3[0m\n";
break;
default:
# code...
break;
}
}
可重复使用形式的更清洁解决方案 class。
PHP Class:
class CLI
{
// this method requires one variable. the second, color, is optional
function cout_color($content, $color=null)
{
// if a color is set use the color set.
if(!empty($color))
{
// if our color string is not a numeric value
if(!is_numeric($color))
{
//lowercase our string value.
$c = strtolower($color);
}
else
{
// check if our color value is not empty.
if(!empty($color))
{
$c = $color;
}
else
{
// no color was set so lets pick a random one...
$c = rand(1,14);
}
}
}
else // no color argument was passed, so lets pick a random one w00t
{
$c = rand(1,14);
}
$cheader = '';
$cfooter = "3[0m";
// let check which color code was used so we can then wrap our content.
switch($c)
{
case 1:
case 'red':
// color code header.
$cheader .= "3[31m";
break;
case 2:
case 'green':
// color code header.
$cheader .= "3[32m";
break;
case 3:
case 'yellow':
// color code header.
$cheader .= "3[33m";
break;
case 4:
case 'blue':
// color code header.
$cheader .= "3[34m";
break;
case 5:
case 'magenta':
// color code header.
$cheader .= "3[35m";
break;
case 6:
case 'cyan':
// color code header.
$cheader .= "3[36m";
break;
case 7:
case 'light grey':
// color code header.
$cheader .= "3[37m";
break;
case 8:
case 'dark grey':
// color code header.
$cheader .= "3[90m";
break;
case 9:
case 'light red':
// color code header.
$cheader .= "3[91m";
break;
case 10:
case 'light green':
// color code header.
$cheader .= "3[92m";
break;
case 11:
case 'light yellow':
// color code header.
$cheader .= "3[93m";
break;
case 12:
case 'light blue':
// color code header.
$cheader .= "3[94m";
break;
case 13:
case 'light magenta':
// color code header.
$cheader .= "3[95m";
break;
case 14:
case 'light cyan':
// color code header.
$cheader .= "3[92m";
break;
}
// wrap our content.
$content = $cheader.$content.$cfooter;
//return our new content.
return $content;
}
}
基本用法:
//create a new object
$cli = new CLI();
//example string
$text = 'Success!';
//color via class color id
$text = $cli->cout_color($text, 2);
//color via string name
//$text = $cli->cout_color($text, 'green');
//for random color, ignore the second parameter.:
//$text = $cli->cout_color($text);
echo $text;
修改为您的项目要求。祝你好运。
经过一些实验,我做了这些代码:
function formatPrint(array $format=[],string $text = '') {
$codes=[
'bold'=>1,
'italic'=>3, 'underline'=>4, 'strikethrough'=>9,
'black'=>30, 'red'=>31, 'green'=>32, 'yellow'=>33,'blue'=>34, 'magenta'=>35, 'cyan'=>36, 'white'=>37,
'blackbg'=>40, 'redbg'=>41, 'greenbg'=>42, 'yellowbg'=>44,'bluebg'=>44, 'magentabg'=>45, 'cyanbg'=>46, 'lightgreybg'=>47
];
$formatMap = array_map(function ($v) use ($codes) { return $codes[$v]; }, $format);
echo "\e[".implode(';',$formatMap).'m'.$text."\e[0m";
}
function formatPrintLn(array $format=[], string $text='') {
formatPrint($format, $text); echo "\r\n";
}
//Examples:
formatPrint(['blue', 'bold', 'italic','strikethrough'], "Wohoo");
formatPrintLn(['yellow', 'italic'], " I'm invicible");
formatPrintLn(['yellow', 'bold'], "I'm invicible");
只需复制并粘贴上面的代码,然后...享受 :)