String mit BB TAG kürzen bzw. umbrechen!

KICK

Mitglied
Hi,

ich versuche gerade ein kleines Pinboard zu programmieren das auch BB Codes verwendet.

Wenn ein User einen neuen Beitrag absendet wird zuerst Html gefiltert und anschließend der BB Code (oder VB Code wie immer man es auch nennen will) durch den entsprechenden Html Tag ersetzt.

Im Prinzip alles kein Problem, doch jetzt will ich zu lange Wörter natürlich umbrechen um das Design der Page zu "schützen". Dieses verusche ich nun folgendermaßen zu realisieren:

PHP:
<?

//NACHRICHT
$message ="Hallo Hallo

Text Text Text EinWortDasVielZuLangeIstUndDeshalbUmgebrichenWerdenMUss

und so weiter";


//Wie lange bzw. wieviele zeichen darf ein Wort maximal sein?
$maxwordlength ="10";

  foreach(explode(" ",str_replace("\n"," ",$message)) as $word)
  {
    if (strlen($word)>$maxwordlength)
    {

    // Originalwort
    $originalword = "$word";
    //Wort wird umgebrochen
    $word_mit_umbruch = wordwrap($word, $maxwordlength, "<br>", 1);
    // Originalwort mit umgebrochenem Wort in Nachricht ersetzen
    $message = ereg_replace("$originalword","$word_mit_umbruch",$message);

    }
  }

//Zeilenumbruch erstellen
$message = nl2br($message);

//Ausgabe
echo "Nachricht:<br><br>$message";
?>

So weit so gut, jetzt aber zum eigentlichen Problem, dass mir jetzt schon seit fast einer Woche Kopfschmerzen bereitet. Wenn der Text jetzt nämlich BB Code enthält zählt die wordwrap funktion natürlich auch diese Zeichen mit und bricht mir dann z.B. mitten im BB Code einen link um etc..

Ich habs mittlerweile schon auf hunderte Arten probiert bin aber bis jetzt noch zu keinem Ergebniss gekommen wie ich das Script daszu bringe nur den eigentlichen Text zwischen den BB Codes zu kürzen bzw. umzubrechen.

Hat da irgendjemand eine Idee wie sowas zu realisieren wäre, bin mit meinem Wissen nämlich am Ende :(

Übrigens hier im Forum werden zu lange Wörter auch umgebrochen hab ich gesehen, viell. kann mir ja der Board Admin da auch weiterhelfen

GreetZ KICK
 
Tja, Du musst im Grunde jedes Wort auf BB-Codes prüfen und wenn es welche enthält die keinen Zeilenumbruch vertragen, dann darfst Du das Wort ganz einfach nicht "brechen". Macht dieses Board übrigens meines Wissens nach auch. URL-Tags werden mittels JavaScript gekürzt, der CODE-Tag z.B. bleibt aber ganz ungebrochen, wenn ich mich jetzt nicht täusche.

Eine kleine Anmerkung an Dein Skript hätte ich noch. Ich würde kein ereg_replace verwenden um das alte gegen das neue Wort auszutauschen, wenn Du vorher ohnehin explode verwendest.

Mein Tipp also:
Speichere die Daten des explode in einem Array, parse anschließend das Array mittels einer for-Schleife oder eines foreach und tausche die Wörter nun mittels des Array-Indexes aus. Ist in dem Fall sicheriger und schneller. :)
 
Zurück