BB Code - Wörter kürzen
Autor
Flitze
Klicks 174545
Keywords:
BB Code Tutorial, [img]-Tags, Wörter kürzen, http direkt umwandeln, Wörter kürzen, Spam, BBCode, langer Text
Klicks 174545
Rating für BB Code
8.6 von 10
Bewertungen187
Stand
11.06.2013
8.6 von 10
Bewertungen187
Keywords:
BB Code Tutorial, [img]-Tags, Wörter kürzen, http direkt umwandeln, Wörter kürzen, Spam, BBCode, langer Text
Breadcrumb:
Tutorials » BB Code » BB Code - Wörter kürzen
3. Wörter kürzen
[ADSENSE_LINE]Manchmal gibt es Leute, die gezielt das Layout einer Website zerstören, indem sie z.B. einen Gästebucheintrag erstellen, der so aussehen könnte:
Code:
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
Der Browser kann nirgendwo einen automatischen Zeilenumbruch erzeugen (IE mit seinem word-break lasse ich mal außen vor) und die ganze Seite wird unheimlich in die Breite gezogen. Um dem vorzubeugen, kann man den Text mit Hilfe der folgenden Funktion nach einer bestimmten Anzahl von Buchstaben ein Leerzeichen einfügen, so dass der Browser umbrechen kann.
PHP:
<?php
// Wörter mit mehr als 60 Zeichen werden ab dem 60. Zeichen um ein Leerzeichen ergänzt
// damit der Browser den Text umbrechen kann (, sonst wird das Layout zerstört)
$max_word_lenght = 60;
// Die Länge von Links ist größer, da sie nur im Quelltext als 'lang' erscheinen
// Links werden später noch gesondert behandelt
$max_link_lenght = 200;
// Trennzeichen
$splitter = " ";
// Text in Zeilen aufteilen, sonst würden Zeilenumbrüche (\n) nicht als Worttrennung erkannt
$lines = explode("\n", $text);
foreach($lines as $key_line => $line) {
// jede Zeile in Wörter aufteilen
$words = explode(" ",$line);
// jedes Wort prüfen
foreach($words as $key_word => $word) {
// für Links wird die maximale Länge erhöht
if(substr(strtolower($word), 0, 7)== 'http://' OR substr(strtolower($word), 0, 8)== 'https://' OR substr(strtolower($word), 0, 4)=='www.')
$max_lenght = $max_link_lenght;
else
$max_lenght = $max_word_lenght;
$word = trim($word);
// BB-Code Tags entfernen, da sie nicht zur Buchstabenlänge eines Wortes zählen
$word = preg_replace("/\[(.*)\]/Usi", "", $word);
if(strlen($word)>$max_lenght) {
// Trennen des Wortes nach max_length Buchstaben
$words[$key_word] = chunk_split($words[$key_word], $max_lenght, $splitter);
// abziehen der Länge des Trennzeichens, dieses wird am Ende automatisch
// noch einmal eingefügt
$length = strlen($words[$key_word])-strlen($splitter);
$words[$key_word] = substr($words[$key_word],0,$length);
}
}
// fügt die veränderten Wörter wieder zur Zeile als String zusammen
$lines[$key_line] = implode(" ", $words);
}
// fügt Zeilen wieder zum gesamten Text als String zusammen
$text = implode("\n", $lines);
?>
Die Kommentare erklären eigentlich so ziemlich jeden Schritt, deshalb erspare ich mir mal eine weitere Erläuterung
Fragen können im Forum gestellt werden
Die Umwandlung des BB-Codes sollte danach erfolgen!
Zurück zur vorigen Seite:
BB Code - URL's umwandeln Weiter zur nächsten Seite:
BB Code - Der IMG Tag