假设我有一个php
文件,我想更改基于控制台的应用程序输出的文本颜色......
<?php
$prompt = "What Is Your Name: ";
echo $prompt;
$answer = "You Entered: " . rtrim( fgets( STDIN ));
echo $answer;
?>
我想改变的文字颜色$answer
。
有可能吗?如果可以,我该怎么做?
答案1
答案2
现在您可以在 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";
?>
上述脚本的示例输出:
答案3
您应该使用 PHP 之类的库,而不是硬编码序列内核这将更有可能在更多终端类型上运行
来自的示例ncurses_color_set
:
<?php
ncurses_init();
// If the terminal supports colors, initialize and set active color
if (ncurses_has_colors()) {
ncurses_start_color();
ncurses_init_pair(1, NCURSES_COLOR_YELLOW, NCURSES_COLOR_BLUE);
ncurses_color_set(1);
}
// Write a string at specified location
ncurses_mvaddstr(10, 10, "Hello world! Yellow on blue text!");
// Flush output to screen
ncurses_refresh();
ncurses_end();
?>
检查终端是否具有颜色功能。此函数可用于编写终端独立程式。
[重点是我的]
使用ncurses_attr(NCURSES_A_BOLD);
粗体。请注意,此功能和相关功能均标记为实验性的。
警告此功能是实验。此函数的行为、其名称和相关文档可能会在 PHP 的未来版本中发生变化,恕不另行通知。使用此函数时,风险自负。
警告此函数目前没有记录;只有其参数列表可用。
[强调他们的]
您可能会发现其他库。您应该检查以确保它们使用独立于终端的技术。我发现有几个库使用硬编码序列。
请注意,命令行 (shell) 等效用法tput
是为了与终端无关。我将此信息作为参考起点。应避免使用它们。