前言

cli脚本是很多程序员需要接触到的东西,通常们都使用echo来输出cli下面信息,但其实为了某些输出醒目,们通常可以给某些特定的输出字符串加上一点颜色,例如:

点亮cli

使用特定的颜色代码对字符串进行包裹即可,例如:

echo "\033[31m colorful \033[0m normal \n"
echo "\033[1;31m colorful \033[0m normal \n"

颜色与code

来自:http://blog.lenss.nl/2012/05/adding-colors-to-php-cli-script-output/

  • Black 0;30
  • Blue 0;34
  • Green 0;32
  • Cyan 0;36
  • Red 0;31
  • Purple 0;35
  • Brown 0;33
  • Light Gray 0;37
  • Dark Gray 1;30
  • Light Blue 1;34
  • Light Green 1;32
  • Light Cyan 1;36
  • Light Red 1;31
  • Light Purple 1;35
  • Yellow 1;33
  • White 1;37

color函数实现

https://gist.github.com/hisune/98652966828b7111e9b10602eff4f946

/**
 * 按颜色输出
 * usage: color('error %e, notice %n, normal %s', 'xx', 'oo', 'yes ppg')
 * @param $format
 * @param mixed ...$args
 * @return mixed
 */
function color($format, ...$args)
{
    $colors = [
        '%e' => "\e[31m%s\e[0m", // error
        '%n' => "\e[34m%s\e[0m", // notice
        '%o' => "\e[32m%s\e[0m", // ok
        '%b' => "\e[33m%s\e[0m", // Brown
        '%s' => "%s", // normal
    ];
    while(true){
        $indexes = [];
        foreach($colors as $tag => $addOn){
            $position = strpos($format, $tag);
            if($position !== false){
                $indexes[$tag] = $position;
            }
        }
        if(!$indexes){
            break;
        }
        $min = min($indexes);
        $index = array_keys($indexes, $min);
        $replacement = array_shift($args);
        $format = substr_replace($format, sprintf($colors[$index[0]], $replacement), $min, 2);
    }
    echo $format . "\n";
}

如果您觉得您在我这里学到了新姿势,博主支持转载,姿势本身就是用来相互学习的。同时,本站文章如未注明均为 hisune 原创 请尊重劳动成果 转载请注明 转自: 为你的php cli脚本输出加点颜色 - hisune.com