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:
Image may be NSFW.
Clik here to view.
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:
Image may be NSFW.
Clik here to view.
Nachher:
Image may be NSFW.
Clik here to view.