在命令提示符下更改我的输出的文本颜色?

Shr*_*dse 5 php command-line bash lubuntu

假设我有一个php文件,我想为基于控制台的应用程序更改输出的文本颜色...

<?php
$prompt = "What Is Your Name: ";
echo $prompt;
$answer =  "You Entered: " . rtrim( fgets( STDIN ));
echo $answer;
?>
Run Code Online (Sandbox Code Playgroud)

我想更改$answer.

是否可以?如果是,我该怎么做?

Jos*_*Jos 6

这当然可以使用ANSI 转义码

<?php
echo "\033[31m some colored text \033[0m some white text \n";
?>
Run Code Online (Sandbox Code Playgroud)

将输出红色的“一些彩色文本”和白色的“一些白色文本”(除非您为终端选择了不同的默认颜色)。

字符\033表示转义码的开始。[31m是红色。[0m表示编码片段的结束。如需更多颜色,请参见此处

对于其他效果,例如粗体:

\033[1m bold text \033[0m

见第一个链接。您可以通过执行以下操作在命令行上尝试这些代码:

echo -e "\033[1m bold text \033[0m"
Run Code Online (Sandbox Code Playgroud)


sou*_* c. 3

现在您可以在 Ubuntu 16.04 的终端中使用 24 位真彩色

在此输入图像描述

  • 前台转义序列是^[38;2;<red>;<green>;<blue>m
  • 背景转义序列是^[48;2;<red>;<green>;<blue>m
  • <red> <green> <blue>范围从 0 到 255(含)。
  • 转义序列^[0m将输出返回到默认值。

请参阅 RGB 颜色代码

在脚本中演示24 位真彩色:

在此输入图像描述

这是修改后的脚本,用于生成彩色输出。

<?php
$prompt = "What Is Your Name: ";
echo $prompt;
$answer =  rtrim( fgets( STDIN ));
echo "\033[38;2;0;102;0m You \033[38;2;255;0;255m Entered: \033[38;2;255;255;0m $answer \033[0m \n";
?>
Run Code Online (Sandbox Code Playgroud)

上述脚本的示例输出:

样本输出