simplecontent

PHP Snippets und Beispiele

Inhaltsverzeichnis A-Z Register
Beispiel ausführen

Eine Text einrahmen

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). Das PHP Code Beispiel:
<?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 ein "Käschtle" um seinen Text haben möchte, 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;

?>

Dieses PHP Snippet soll in erster Linie als Beispiel und Anregung für eigene Bemühungen dienen.
Gerne darf man es für Projekte aller Art benutzen.
Möchte jemand das Snippet also solches in ähnlicher oder anderer Form veröffentlichen ist ein kleiner Hinweis auf simplecontent.net nicht zuviel verlangt oder Herr Koch?
Für die Abwesenheit von Fehlern kann natürlich keine Gewähr gegeben werden.