Eine Text einrahmen

Beispiel ausführen
Wenn man ein "Käschtle" um seinen Text haben möchte, geht das sehr einfach. Das wird gerne für Readme-Dateien, E-Mails und ähnliches benutzt. Auch wenn es natürlich ohne jeden praktischen Nutzen ist. Es sieht halt etwas netter aus (Geschmackssache).
<?php
/**
* Einen Text mit einem Zeichen umrahmen
*/


function TextBox($text$char '#'$maxwidth 0$usemax true)
{
    
// die "Deko"-Elemente für Zeilenanfang und Ende
    
$left_char $char.' ';
    
$right_char ' '.$char;

    
// Hier ggf. eigene Varianten nutzen



    // Gesamtbreite der Deko-Elemente ermiteln
    
$chars_width strlen($left_char) + strlen($right_char);

    
// newline Zeichen
    
$nl "\n";

    
// Tab-Stops durch Leerzeichen ersetzen

    
$tab     str_repeat(' '8);
    
$text     str_replace("\t"$tab$text);


    
// die maximale Zeilenbreite im Text ermitteln
    
$max max(array_map('strlen'explode ("\n"$text))) + $chars_width;


    
// welche Breite soll genutzt werden?
    //
    // $maxwidth = 0, dann Breite = maximal genutzte Breite ($max)
    // $usemax = true, dann Breite = $maxwidth
    // $usemax = false, dann Breite = maximal genutzte ...
    // ... Breite ($max), aber höchstens maxwidth

    
if ((!$usemax && $max $maxwidth) || $maxwidth == 0){
        
$maxwidth $max;
    }

    
$starline str_repeat($char$maxwidth);

    
$lines = array();
    
$lines[] = $starline;
    
$textwidth $maxwidth $chars_width;
    
$text str_replace("\r"''$text);

    
$new_text wordwrap($text$textwidth"\n"1);
    
$tmp explode ("\n"$new_text);
    foreach (
$tmp as $s){
        
$s trim($s);
        
$l strlen($s);
        
$lines[] = $left_char.$s.str_repeat(' '$textwidth-$l).$right_char;
    }

    
$lines[] = $starline;
    
$new join ($nl$lines);

    return 
$new;
}





if (isset(
$_POST['msg']) && !empty($_POST['msg'])){


    
$_POST['msg'] = get_magic_quotes_gpc()
        ? 
stripslashes($_POST['msg'])
        : 
$_POST['msg'];

    
$width intval($_POST['width']);
    
$char $_POST['char'];
    echo 
'<pre>'.TextBox($_POST['msg'], $char$width).'</pre>';



    
$msg htmlentities($_POST['msg']);
}else{
$msg = <<< EOT
Das ist ein Beispiel
--------------------
Wenn man einen "Kasten" um seinen Text haben moechte, geht das sehr einfach.
Das wird gerne für Readme-Dateien, Emails und ähnliches benutzt.
Auch wenn es natürlich ohne jeden praktischen Nutzen ist.

Sieht halt etwas netter aus (Geschmackssache).
EOT;
}

echo <<< EOT
<form method="post" action="{$_SERVER['PHP_SELF']}">
 <textarea name="msg" rows="10" cols="70">
$msg</textarea>
<br/>
 <select name="char">
  <option>#</option>
  <option>*</option>
  <option>+</option>
  <option>-</option>
 </select>

 <select name="width">
  <option>80</option>
  <option>70</option>
  <option>60</option>
  <option>50</option>
  <option>40</option>
  <option>0</option>
 </select>

 <input type="submit" value="abschicken">
</form>

EOT;

?>

Benutzte Funktionen


Hinweise zum DatenschutzImpressum © 2005-2008 S. Eickhoff