Erstellt einen ASCII-Kasten um den übergebenen String. Solche grafischen Details kennt man aus Konsolen-Programmen und in der guten alten Shell.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
<?php /** * Erstellt einen ASCII-Kasten um den übergebenen String. Solche grafischen Details kennt man aus * Konsolen-Programmen und in der guten alten Shell. * * @param string $content [, int $width = 0 [, array $chars = array()]] * @return string * @see http://www.php-function.de/funktion/strings/mk_console_container/ */ function mk_console_container($content, $width = 0, $chars = array()){ if(!count($chars)) $chars = array("vertical" => "|", "horizontal" => "-", "corner" => "+"); // Längste Zeile im Array bestimmten $length = 0; $content = explode("\n", $content); foreach($content as $line){ if(strlen($line) > $length) $length = strlen($line); } if($width == 0 || $width < $length) // Wenn keine Breite angegeben ist/Breite = 0 $width = 10 + $length; $width -= 2; // Weil ja rechts und links noch Rahmen sind /* Array-Elemente mit Leerzeichen auffüllen */ foreach($content as $num => $line){ $line = trim($line); if($line == "%line%"){ // Zeichne eine Linie $content[$num] = str_repeat($chars["horizontal"], $width); continue; } if($line == "%empty%"){ // Leere Zeile $content[$num] = str_repeat(" ", $width); continue; } $empty = $width - strlen($line); // Anzahl der nicht ausgefüllten Zeichen $diff["left"] = ceil($empty / 2); $diff["right"] = $empty - $diff["left"]; $content[$num] = str_repeat(" ", $diff["left"]).$line.str_repeat(" ", $diff["right"]); } /* Rahmen rechts und links hinzufügen */ foreach($content as $num => $line) $box[] = $chars["vertical"].$line.$chars["vertical"]; /* Rahmen oben und unten generieren */ array_unshift($box, $chars["corner"].str_repeat($chars["horizontal"], $width).$chars["corner"]); // Rahmen oben array_push($box, $chars["corner"].str_repeat($chars["horizontal"], $width).$chars["corner"]); // Rahmen unten return implode("\n", $box); } ?> |
Schreibe einen Kommentar