99久久国产露脸精品麻豆,欧美日韩精品小说,亚洲免费在线美女视频,国产三级中文字幕,91极品国产情侣高潮对白,国产亚洲一区二区三区不卡片,欧美jizz精品欧美性,久久国产精品久久国产片

PHP cli模式在終端輸出彩色文字

袁志蒙 3576次瀏覽

摘要:CLI模式其實就是命令行運行模式,英文全稱Command-Line Interface(命令行接口),在終端運行PHP時默認都是白色字體,從屏幕中找關鍵字很...

CLI模式其實就是命令行運行模式,英文全稱Command-Line Interface(命令行接口),在終端運行PHP時默認都是白色字體,從屏幕中找關鍵字很累,為了提高體驗,我們需要把一些關鍵字設置成彩色的。

在shell下實現方法:

echo  -e  "\033[32mHello, world!"

當你在終端里敲下這條命令后,是不是發現系統用綠色輸出了"Hello,world!",不止如此,連之后的命令提示符都變成了綠色?不要著急,聽我繼續說。echo命令-e選項的作用是激活終端對反斜線轉義符(即\)的解釋。引號內\033用于引導非常規字符序列,在這里的作用就是引導設置輸出屬性,后邊的[32m就是將前景色設置為綠色,字母m表示設置的屬性類別,數字代表屬性值。設置可以單獨使用,例如:

echo -e  "\033[0m"

這行命令的作用是恢復屬性為默認值,也就是說0m設置項用于恢復默認值。現在你的終端是不是又一切正常了?

理解了這些,剩下的就簡單了。用這種命令,除了設置文本前景色,還可以設置很多屬性。下邊列出其他的設置項:

\033[0m 關閉所有屬性
\033[1m 設置高亮度
\033[4m 下劃線
\033[5m 閃爍
\033[7m 反顯
\033[8m 消隱
\033[30m 至 \33[37m 設置前景色
\033[40m 至 \33[47m 設置背景色
\033[nA 光標上移n行
\033[nB 光標下移n行
\033[nC 光標右移n行
\033[nD 光標左移n行
\033[y;xH設置光標位置
\033[2J 清屏
\033[K 清除從光標到行尾的內容
\033[s 保存光標位置
\033[u 恢復光標位置
\033[?25l 隱藏光標
\033[?25h 顯示光標

各數字所代表的顏色如下:

字背景顏色范圍:40----49

40:黑
41:深紅
42:綠
43:黃色
44:藍色
45:紫色
46:深綠
47:白色

字顏色:30-----------39

30:黑
31:紅
32:綠
33:黃
34:藍色
35:紫色
36:深綠
37:白色

另外,同類的多種設置項可以組合在一起,中間用分號(;)隔開。如下: 

echo -e "\033[20;1H\033[1;4;32mHello,world\033[0m"

這行命令首先\033[20;1H將光標移動到終端第20行第1列,之后的\033[1;4;32m將文本屬性設置為高亮、帶下劃線且顏色為綠色,然后輸出Hello,world;最后\033[0m將終端屬性恢復為默認值,這樣就不會看到連命令完成后的命令提示符也變了樣兒了。  

通過以上各種命令的組合就可以實現對終端輸出地復雜控制。

以上是在Shell中的實現方法,在PHP中怎么使用呢?我寫了一個例子:

<?php 

class Colors {

    private $foreground_colors = array();

    private $background_colors = array();

    public function __construct() {

        $this->foreground_colors['black'] = '0;30';
        $this->foreground_colors['dark_gray'] = '1;30';
        $this->foreground_colors['blue'] = '0;34';
        $this->foreground_colors['light_blue'] = '1;34';
        $this->foreground_colors['green'] = '0;32';
        $this->foreground_colors['light_green'] = '1;32';
        $this->foreground_colors['cyan'] = '0;36';
        $this->foreground_colors['light_cyan'] = '1;36';
        $this->foreground_colors['red'] = '0;31';
        $this->foreground_colors['light_red'] = '1;31';
        $this->foreground_colors['purple'] = '0;35';
        $this->foreground_colors['light_purple'] = '1;35';
        $this->foreground_colors['brown'] = '0;33';
        $this->foreground_colors['yellow'] = '1;33';
        $this->foreground_colors['light_gray'] = '0;37';
        $this->foreground_colors['white'] = '1;37';
        $this->background_colors['black'] = '40';
        $this->background_colors['red'] = '41';
        $this->background_colors['green'] = '42';
        $this->background_colors['yellow'] = '43';
        $this->background_colors['blue'] = '44';
        $this->background_colors['magenta'] = '45';
        $this->background_colors['cyan'] = '46';
        $this->background_colors['light_gray'] = '47';
    }

    public function getColoredString($string, $foreground_color = null, $background_color = null) {
		
        $colored_string = "";
        if (isset($this->foreground_colors[$foreground_color])) {
            $colored_string .= "\033[" . $this->foreground_colors[$foreground_color] . "m";
        }

        if (isset($this->background_colors[$background_color])) {
            $colored_string .= "\033[" . $this->background_colors[$background_color] . "m";
        }

        $colored_string .= $string . "\033[0m";
        return $colored_string;
    }

    public function getForegroundColors() {
        return array_keys($this->foreground_colors);
    }

    public function getBackgroundColors() {
        return array_keys($this->background_colors);
    }
}

// 用法也比較簡單:

$colors = new Colors();

echo $colors->getColoredString("黃底紫字", "purple", "yellow");
echo $colors->getColoredString("淺灰底藍字", "blue", "light_gray");
echo $colors->getColoredString("黑底紅字", "red", "black");
echo $colors->getColoredString("綠底深藍字", "cyan", "green");
echo $colors->getColoredString("默認背景上的青字", "cyan");
echo $colors->getColoredString("默認顏色文字在青色背景上", null, "cyan");


隨機內容

表情

共0條評論
  • 這篇文章還沒有收到評論,趕緊來搶沙發吧~