Hallo
wordwrap ist ja eine bekannte Funktion um nach einer bestimmten Anzahl von Zeichen einen Zeilenumbruch einzufügen.
Ganz nützlich in kleinen Boxen wenn der Inhalt nicht über den Rand hinaus wachsen soll oder sowas.
Ist sicher keine Funktition die man oft braucht, die ich da geschrieben hab,
aber ich habs halt gebraucht und dachte mir ich erspar euch n Haufen Arbeit, falls ihr auch mal sowas brauchen solltet.
Jetzt speziell in meinem Fall hab ich das zum Anzeigen von Code gebraucht.
Das sieht dann mit wordwrap schonmal so aus:
[Blockierte Grafik: http://i25.tinypic.com/20styiu.png]
Die Funktion macht jetzt eigentlich nicht anderes als zu markieren was normal EINE Zeile ist, welche aber auf Grund des Platzmangel umgebrochen wurde.
Das sieht dann so aus:
[Blockierte Grafik: http://i31.tinypic.com/2pzbuie.png]
Wie gesagt kann in bestimmten Situationen nützlich sein, wird man aber wohl nicht oft brauchen
Sicherlich auch nicht ganz ausgereift - vielleicht habt ihr ja Verbesserungsvorschläge.
<?php
function mark_wordwrap($input){
$length = 75;
// Falls eine Zeile länger als die gewählte Anzahl Zeichen ($length) ist,
// wird sie umgebrochen und das erste Zeichen nach dem Umbruch rot markiert,
// um mitzuteilen dass die Zeile automatisch umgebrochen wurde
// $trenner fügt Platzhalter in den String ein, welche später durch einen Zeilenumbruch ersetzt werden,
// da \n im Prozess von $out3 verschwindet und somit nichtmehr für ein str_replace verwendet werden kann.
// <br /> wird ebenfalls zerstört ($splitting2).
$trenner = str_replace("\n", "\n(#TRENNER#)", $input);
// Es wird ein Array mit den einzelnen Zeilen des Eintrags gebildet.
$out3 = explode("\n", $trenner);
$count = count($out3)-1;
$counter = 0;
$check = '';
// Diese Schleifen ermitteln die Zeilenlängen, brechen diese um wenn nötig,
// färben das erste Zeichen nach dem Umbruch ein und schreiben den Inhalt in ein neues Array.
while($counter <= $count){
if(strlen($out3[$counter]) > $length){
$check .= '1';
$splitting1 = wordwrap($out3[$counter], $length, "<br />", 1);
$splitting2 = explode('<br />', $splitting1);
$splitting_count = count($splitting2)-1;
$splitting_counter = 1;
while($splitting_counter <= $splitting_count){
$first = $splitting2[$splitting_counter][0];
$new_first= '<br /><span class="red">'.$first.'</span>';
$new_string .= $new_first.substr($splitting2[$splitting_counter], 1);
if($splitting_counter == 1){
$out4[] = $splitting2[0].$new_string;
}
else{
$out4[] = $new_string;
}
unset($new_string);
$splitting_counter++;
}
}
else{
$out4[] = $out3[$counter];
}
$counter++;
}
// Das neue Array wird in einen String umgewandel und die Platzhalter werden durch Zeilenumbrüche ersetzt.
$output[] = str_replace('(#TRENNER#)', '<br />', implode($out4));
// Mitteilung falls eine Zeile automatisch umgebrochen wurde
if(!empty($check)){
$output[] = '<div class="note">Der Inhalt wurde aus Darstellungsgründen<br />an den rot markierten Stellen automatisch umgebrochen!</div>';
}
return $output;
}
?>
Alles anzeigen
Anwendungs-Beispiel:
include('inc/mark_wordwrap.php');
$output = mark_wordwrap($codesnippsel);
echo'<div class="box"><code>'.$output[0].'</code>'.$output[1].'</div>';
Gruß, Donkey