Предположим, что у меня есть php файл, и я хочу изменить цвет текста своего вывода для основанного на консоли приложения...
<?php
$prompt = "What Is Your Name: ";
echo $prompt;
$answer = "You Entered: " . rtrim( fgets( STDIN ));
echo $answer;
?>
Я хочу изменить цвет текста $answer
.
Действительно ли это возможно? Если да, как я могу сделать это?
^[38;2;<red>;<green>;<blue>m
^[48;2;<red>;<green>;<blue>m
<red> <green> <blue>
диапазон от 0 до 255 включительно. ^[0m
вывод возвратов для установки по умолчанию. Посмотрите Цветовые коды RGB Диаграмма
Вот измененный сценарий для создания окрашенный выводом.
<?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";
?>
Демонстрационный Вывод вышеупомянутого сценария:
Вместо трудно кодированных последовательностей необходимо пользоваться библиотекой, такой как 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);
для полужирного. Обратите внимание, что эта функция и связанные отмечены как экспериментальные.
Предупреждение Эта функция ЭКСПЕРИМЕНТАЛЬНА . Поведение этой функции, ее имени и окружающей документации может измениться без уведомления в будущем выпуске PHP. Эта функция должна использоваться на Ваш собственный риск.
Предупреждение Эта функция в настоящее время не документируется; только его список аргументов доступен.
[акцент их]
можно найти другие библиотеки. Необходимо проверить, чтобы удостовериться, что они используют независимые от терминала методы. Я нашел несколько что использование трудно кодированные последовательности вместо этого.
Примечание, что командная строка (оболочка) эквивалентное использование tput
, чтобы быть терминальным независимым политиком. Я включаю эту информацию как начальную точку для ссылки. Их нужно избежать.
Это - конечно, возможное использование управляющие коды 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"