Add Color to PHP Echo in CLI
I adapted this PHP script from If Not True Then False for CentOS escape codes, which use a semi-colon and not a comma between bold and color codes for foreground color escaping.
[Update Sep 3, 2012] This code is now available on github as part of the Box Bart project.
The newer code has __callStatic magic letting you type EscapeColors::red('Some warning message'); in place of the wordier (and less obvious) EscapeColors::fg_color('red', 'Some warning message');
[Update Sep 3, 2012] This code is now available on github as part of the Box Bart project.
The newer code has __callStatic magic letting you type EscapeColors::red('Some warning message'); in place of the wordier (and less obvious) EscapeColors::fg_color('red', 'Some warning message');
/**
* Color escapes for bash output
*/
class Escape_Colors
{
private static $foreground = array(
'black' => '0;30',
'dark_gray' => '1;30',
'red' => '0;31',
'bold_red' => '1;31',
'green' => '0;32',
'bold_green' => '1;32',
'brown' => '0;33',
'yellow' => '1;33',
'blue' => '0;34',
'bold_blue' => '1;34',
'purple' => '0;35',
'bold_purple' => '1;35',
'cyan' => '0;36',
'bold_cyan' => '1;36',
'white' => '1;37',
'bold_gray' => '0;37',
);
private static $background = array(
'black' => '40',
'red' => '41',
'magenta' => '45',
'yellow' => '43',
'green' => '42',
'blue' => '44',
'cyan' => '46',
'light_gray' => '47',
);
/**
* Make string appear in color
*/
public static function fg_color($color, $string)
{
if (!isset(self::$foreground[$color]))
{
throw new Exception('Foreground color is not defined');
}
return "\033[" . self::$foreground[$color] . "m" . $string . "\033[0m";
}
/**
* Make string appear with background color
*/
public static function bg_color($color, $string)
{
if (!isset(self::$background[$color]))
{
throw new Exception('Background color is not defined');
}
return "\033[" . self::$background[$color] . 'm' . $string . "\033[0m";
}
/**
* See what they all look like
*/
public static function all_fg()
{
foreach (self::$foreground as $color => $code)
{
echo "$color - " . self::fg_color($color, 'Hello, world!') . PHP_EOL;
}
}
/**
* See what they all look like
*/
public static function all_bg()
{
foreach (self::$background as $color => $code)
{
echo "$color - " . self::bg_color($color, 'Hello, world!') . PHP_EOL;
}
}
}
Comments