изменить цвет текста моего вывода на командной строке?

Предположим, что у меня есть php файл, и я хочу изменить цвет текста своего вывода для основанного на консоли приложения...

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

Я хочу изменить цвет текста $answer.

Действительно ли это возможно? Если да, как я могу сделать это?

5
задан 21 July 2016 в 05:21

3 ответа

Теперь можно использовать 24-разрядный истинный цвет в терминале в Ubuntu 16.04

enter image description here

  • , которая приоритетная escape-последовательность ^[38;2;<red>;<green>;<blue>m
  • , фоновая escape-последовательность ^[48;2;<red>;<green>;<blue>m
  • <red> <green> <blue> диапазон от 0 до 255 включительно.
  • escape-последовательность ^[0m вывод возвратов для установки по умолчанию.

Посмотрите Цветовые коды RGB Диаграмма

Демонстрация 24-разрядный истинный цвет в сценарии :

enter image description here

Вот измененный сценарий для создания окрашенный выводом.

<?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";
?>

Демонстрационный Вывод вышеупомянутого сценария:

Sample output

3
ответ дан 23 November 2019 в 08:46

Вместо трудно кодированных последовательностей необходимо пользоваться библиотекой, такой как PHP Ncurses, который, более вероятно, будет работать над большим количеством терминальных типов

пример от 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_has_colors :

Проверки, имеет ли терминал цветные возможности. Эта функция может использоваться для записи независимый от терминала программы.

[шахта акцента]

Использование ncurses_attr(NCURSES_A_BOLD); для полужирного. Обратите внимание, что эта функция и связанные отмечены как экспериментальные.

От ncurses_attron

Предупреждение Эта функция ЭКСПЕРИМЕНТАЛЬНА . Поведение этой функции, ее имени и окружающей документации может измениться без уведомления в будущем выпуске PHP. Эта функция должна использоваться на Ваш собственный риск.

Предупреждение Эта функция в настоящее время не документируется; только его список аргументов доступен.

[акцент их]

можно найти другие библиотеки. Необходимо проверить, чтобы удостовериться, что они используют независимые от терминала методы. Я нашел несколько что использование трудно кодированные последовательности вместо этого.

Примечание, что командная строка (оболочка) эквивалентное использование tput, чтобы быть терминальным независимым политиком. Я включаю эту информацию как начальную точку для ссылки. Их нужно избежать.

3
ответ дан 23 November 2019 в 08:46

Это - конечно, возможное использование управляющие коды ANSI:

<?php
echo "\033[31m some colored text \033[0m some white text \n";
?>

произведет "некоторые окрасили текст", красный и "некоторый белый текст" в белом (если Вы не выбрали различные цвета по умолчанию для своего терминала).

Символы \033 укажите на запуск управляющего кода. [31m красный цвет. [0m показывает конец кодированного фрагмента. Для большего количества цветов посмотрите здесь.

Для других эффектов, такой как полужирный:

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

см. первую ссылку. Можно испытать эти коды командной строки путем выполнения вещи как:

echo -e "\033[1m bold text \033[0m"
6
ответ дан 23 November 2019 в 08:46

Другие вопросы по тегам:

Похожие вопросы: