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