Farben in der Kommandozeile nutzen
Wenn man nur Webseiten erstellt braucht man im Normalfall keine Konsolenscripte, aber bei Cronscripten oder anderen Administrationshelfern wird die CLI-Fähigkeit von PHP häufig genutzt. Manchmal möchte man dabei eine farbige Ausgabe, sprich farbige Schrift und farbigen Hintergrund, um Fehler oder wichtige Meldungen auszugeben und die Ausgabe etwas zu strukturieren.
Hier meine einfache Klasse, die farbige Schrift auf der Konsole ausgeben kann:
<?php class Color { protected $_foregroundColors = array( 'black' => '0;30', 'dark_gray' => '1;30', 'blue' => '0;34', 'light_blue' => '1;34', 'green' => '0;32', 'light_green' => '1;32', 'cyan' => '0;36', 'light_cyan' => '1;36', 'red' => '0;31', 'light_red' => '1;31', 'purple' => '0;35', 'light_purple' => '1;35', 'brown' => '0;33', 'yellow' => '1;33', 'light_gray' => '0;37', 'white' => '1;37', 'black_u' => '4;30', // underlined 'red_u' => '4;31', 'green_u' => '4;32', 'yellow_u' => '4;33', 'blue_u' => '4;34', 'purple_u' => '4;35', 'cyan_u' => '4;36', 'white_u' => '4;37' ); protected $_backgroundColors = array( 'black' => '40', 'red' => '41', 'green' => '42', 'yellow' => '43', 'blue' => '44', 'magenta' => '45', 'cyan' => '46', 'light_gray' => '47' ); public function set($foreground, $background = null) { if (isset($this->_foregroundColors[$foreground])) { echo "\033[" . $this->_foregroundColors[$foreground] . "m"; } if (isset($this->_backgroundColors[$background])) { echo "\033[" . $this->_backgroundColors[$background] . "m"; } } public function reset() { echo "\033[0m"; } public function bold() { echo "\033[1m"; } public function echoString($string, $foreground, $background = null) { $this->set($foreground, $background); echo $string; $this->reset(); } } $color = new Color(); $color->set('red'); echo "red text\n"; $color->reset(); $color->echoString("red text on blue\n", 'red_u', 'blue');
Das Ergebnis sieht dann so aus:
Unter Windows funktioniert das ganze nicht direkt, man muss für Farben auf der Kommandozeile noch ANSICON installieren, damit die oben gesehenen ANSI Escape Sequenzen erkannt werden:
- Download ANSICON von http://adoxa.110mb.com/ansicon/index.html
- Dann je nach System die 32bit oder 64bit Dateien zB nach c:\ansicon kopieren
- Eine cmd starten und installieren: „cd c:\ansicon && ansicon.exe -i“
- danach die cmd schliessen und neu öffnen
Vorher:
Nachher:
[…] diese mit Hilfe vo ASCII Zeichen formatieren aber mit Farbe sieht das schon besser aus. • Farben in der Kommandozeile nutzen < Vorheriger Trackback specific URI for this […]
Ausgabe auf der Kommandozeile in Farbe mit PHP » Bananas Development Blog
3 Feb. 11 at 12:18
Dafür gibt es auch ganz gute Libraries, z.B. CliFX: http://www.github.com/T-Moe/CliFX, das zwar recht jung ist aber schon farbigen Output unterstützt, neben formatiertem Input, Menüs, und ein paar anderen kleinen aber feinen Dingen.
Timo
3 Feb. 11 at 13:16
(ez|Zeta) ConsoleOutput
jens
3 Feb. 11 at 13:39
[…] PHP Gangster hab ich soeben eine kleine Klasse entdeckt mit der CLI Scripte farbige Ausgaben machen können […]
PHP Commandline Script in Farbe | BOHUCO
8 Feb. 11 at 07:51
[…] Farben in der Kommandozeile nutzen. […]
Linkhub – Woche 05-2011 | PehBehBeh
14 Feb. 11 at 21:16
Auch ganz nett und weitestgehend unbekannt ist die Kombination aus ncurses und PHP …
Hatte dazu im Januar einen Artikel geschrieben:
http://www.shopware.de/wiki/Allgemein-PHP-und-grafische-Shell.Oberflaechen-ncurses_detail_630_444.html
Stefan
15 Feb. 11 at 16:58
Danke, hat mir sehr geholfen.
Andreas Rex
31 Jan. 13 at 11:28