這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)PHP-cli模式在終端實現(xiàn)各種文字效果的方法,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
成都創(chuàng)新互聯(lián)公司主營河北網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都app軟件開發(fā)公司,河北h5小程序開發(fā)搭建,河北網(wǎng)站營銷推廣歡迎河北等地區(qū)企業(yè)咨詢
字體顏色與背景色
\033[30m 至 \33[37m 設(shè)置前景色 \033[40m 至 \33[47m 設(shè)置背景色 例如 echo "\033[30m this is a test msg \033[0m".PHP_EOL; echo "\033[45m this is a test msg \033[0m".PHP_EOL; 文字背景顏色范圍: 40:黑 41:深紅 42:綠 43:黃色 44:藍(lán)色 45:紫色 46:深綠 47:白色 文字顏色: 30:黑 31:紅 32:綠 33:黃 34:藍(lán)色 35:紫色 36:深綠 37:白色
標(biāo)記閉合
所有效果在文本結(jié)尾處要加上閉合的標(biāo)記:\033[0m;
文字高亮等其他效果
\033[1m 文字高亮 \033[4m 下劃線 \033[5m 閃爍 \033[7m 反顯 \033[8m 消隱
多種效果組合使用
多種效果組合使用時用英文分號隔開,例如藍(lán)底紅字下劃線加閃爍 echo "\033[44;31;4m this is a test msg \033[0m".PHP_EOL;
\033[nA 光標(biāo)上移n行 \033[nB 光標(biāo)下移n行 \033[nC 光標(biāo)右移n行 \033[nD 光標(biāo)左移n行
\033[y;xH設(shè)置光標(biāo)位置 \033[2J 清屏 \033[K 清除從光標(biāo)到行尾的內(nèi)容 \033[s 保存光標(biāo)位置 \033[u 恢復(fù)光標(biāo)位置 \033[?25l 隱藏光標(biāo) \033[?25h 顯示光標(biāo)
文字效果操作類
namespace Console;class Style{ private $colors = [ "black"=>30, "red"=>31, "green"=>32, "yellow"=>33, "blue"=>34, "purple"=>35, "darkGreen"=>36, "white"=>37, ]; private $backgrounds = [ "black"=>40, "darkRed"=>41, "green"=>42, "yellow"=>43, "blue"=>44, "purple"=>45, "darkGreen"=>46, "white"=>47, ]; public $msg; public $style = []; public function __construct($msg){ $this->msg = $msg; } // 設(shè)置文本顏色 public function color( string $c ){ if( isset( $this->colors[$c]) ) $this->style[] = $this->colors[$c]; return $this; } // 設(shè)置背景色 public function bg( string $c ){ if(isset($this->backgrounds[$c]) ) $this->style[] = $this->backgrounds[$c]; return $this; } // 高亮 public function highLight(){ $this->style[] = 1; return $this; } // 下劃線 public function underLine(){ $this->style[] = 4; return $this; } // 閃爍 public function twinkle(){ $this->style[] = 5; return $this; } // 反顯 public function rshow(){ $this->style[] = 7; return $this; } // 消隱 public function hide(){ $this->style[] = 8; return $this; } public function toString(){ $this->style = array_unique($this->style); if($this->msg){ if(sizeof($this->style) ){ return "\033[".implode(';',$this->style)."m" . $this->msg . "\033[0m"; }else{ return $this->msg. "\033[0m"; } }else{ return false; } } }
光標(biāo)操作類
namespace Console; // 光標(biāo)的信息以及操作 class Cursor{ // 光標(biāo)設(shè)置 \033[y;xH private $x=0; private $y=0; // 獲取光標(biāo)X軸位置 public function offsetX(){ return $this->x; } // 獲取光標(biāo)Y軸位置 public function offsetY(){ return $this->y; } // 獲取光標(biāo)坐標(biāo) public function offset(){ return [ 'x'=>$this->x, 'y'=>$this->y, ]; } public function setX( int $x ){ $this->x = $x; } public function setY( int $y ){ $this->y = $y; } public function setOffset( int $x , int $y ){ $this->x = $x; $this->y = $y; return $this->toString(); } // 清屏 public function clear(){ return "\033[2J"; } public function show(){ return "\33[?25h"; } public function hide(){ return "\33[?25l"; } public function toString(){ if($this->x<0)$dx = 'D'; else $dx = 'C'; if($this->y<0)$dy = 'A'; else $dy = 'B'; $absx = abs($this->x); $absy = abs($this->y); return "\033[{$absx}{$dx}\033[{$absy}{$dy}"; } }
table類,通便html的table標(biāo)記語言,輸出table
namespace Console;class Table{ public $table=[]; private $getV; private $currentTag='table'; private $props = [ 'color','bg','twinkle','highLight','underLine','colspan','rowspan','width','border','align' ]; public function __construct( string $html){ // 解析字符串最好 $this->html=$html; $this->parse(); } // 解析字符串 將table的每個tr td以及屬性都解析出來 private function parse(){ if( !preg_match("/
(.*?)<\/td>/is",$this->html) ){
die('標(biāo)簽有誤,必須包含table tr td標(biāo)簽且標(biāo)簽閉合');
}
$this->table['html'] = $this->html;
$this->getPrototype('table',$this->table);
preg_match_all("/
|