How to enable color for PHP CLI?
First we use an escape character so we can actually define a output color. This is done with \033
(\e). Then we open the color statement with [31m
. Red in this case.
The "some colored text" will be the text outputted in a different color. And after that we have to close the color statement with \033[0m
.
php -r 'echo "\033[31m some colored text \033[0m some white text \n";'
For lazier
function colorLog($str, $type = 'i'){ switch ($type) { case 'e': //error echo "\033[31m$str \033[0m\n"; break; case 's': //success echo "\033[32m$str \033[0m\n"; break; case 'w': //warning echo "\033[33m$str \033[0m\n"; break; case 'i': //info echo "\033[36m$str \033[0m\n"; break; default: # code... break; }}
After doing some experiments, I made these codes:
function formatPrint(array $format=[],string $text = '') { $codes=[ 'bold'=>1, 'italic'=>3, 'underline'=>4, 'strikethrough'=>9, 'black'=>30, 'red'=>31, 'green'=>32, 'yellow'=>33,'blue'=>34, 'magenta'=>35, 'cyan'=>36, 'white'=>37, 'blackbg'=>40, 'redbg'=>41, 'greenbg'=>42, 'yellowbg'=>44,'bluebg'=>44, 'magentabg'=>45, 'cyanbg'=>46, 'lightgreybg'=>47 ]; $formatMap = array_map(function ($v) use ($codes) { return $codes[$v]; }, $format); echo "\e[".implode(';',$formatMap).'m'.$text."\e[0m";}function formatPrintLn(array $format=[], string $text='') { formatPrint($format, $text); echo "\r\n";}//Examples:formatPrint(['blue', 'bold', 'italic','strikethrough'], "Wohoo");formatPrintLn(['yellow', 'italic'], " I'm invicible");formatPrintLn(['yellow', 'bold'], "I'm invicible");
Just copy and paste the code above and... Enjoy :)