Unique86 Geschrieben 29. Mai 2006 Teilen Geschrieben 29. Mai 2006 Mahlzeit, ich hab ein Problem, was ich einfach irgendwie nicht lösen kann. Vorab möchte ich darauf hinweisen das ich die funktion "wordwrap()" nichts anfagen kann Erklärung dazu später. Also hier erstmal das Problem bzw. die Beschreibung. Ich habe eine funktion function user_insert_bbcode_off($string) { $string = stripslashes($string); $string = htmlentities($string); $string = nl2br($string); $synonym = array('Wink'=>'true.gif','Smile'=>'lough.gif','Very Happy'=>'giigle.gif','Razz'=>'kidding.gif',''=>'shock.gif',':\('=>'sad.gif',';\('=>'wine.gif',')\('=>'angry.gif','X\('=>'badly.gif','=)'=>'notme.gif',':/'=>'nc.gif',':\['=>'sure.gif'); foreach($synonym as $k => $v) { $string = ereg_replace($k, '<img src=images/smileys/'.$v.'>', $string); } return $string; } [/PHP] welche mir einen vom User eingegebenen String sehr schön in "nicht ausführbare HTML/PHP/SCRIPT" tags umwandelt sowie alle synonyme smiley attribute in die dafür vorgesehenen <img´s> ersetzt. Ich habe allerdings das Problem, das zusammenhängende Zeichen die länger als 16 sind also z.B. "WWWWWWWWWWWWWWWWWWWWWWWWWWWWW" mein Template zerreißen. Somit muss es gebrochen werden. Klar - wordwrap wäre hier möglich. Aber jetzt kommt das weitere Problem. Wenn ein Benutzer "so unglücklich' einen Smiley z.B. in 16 und 17 Zeichen gebaut hat, bricht der Smiley durch und ich habe in der einen Zeile ein ";" und in der nächsten ein ")" das soll verhindert werden. Ferner dürfen alle Sonderzeichen auch solche wie ® oder • NICHT 3mal hintereinander ausgegeben werden d.h. sobald mehr als 3 hintereinander sind müssen diese auf 3 reduziert werden. Ich hänge da schon ne ganze weile dran weil ich irgendwie immer denkfehler habe. Vllt. kann mir jemand helfen Gruss Sven Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
londo Geschrieben 30. Mai 2006 Teilen Geschrieben 30. Mai 2006 du könntest z.b. das zeichen in 16/17 auswerten und wenn es ein sonderzeichen ist dannlässt den zeiger vor das letzte auftreten eines ":" oder ";" springen, oder welche zeichen da sonst so bei dir als smileyauszeichnung dienen. dann lässt alles was rechts des zeigers ist in der nächsten zeile ausgeben. man könnte das auch mit dem letzten leerzeichen machen, aber gibt ja auch viele die smileys direkt hinter wörter setzen, könntest also ausversehen auch wörter umbrechen. wegen der eingabe, wäre es da nicht möglich das schon auf clientseite zu verhinden? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Unique86 Geschrieben 30. Mai 2006 Autor Teilen Geschrieben 30. Mai 2006 thx 4 reply ... joa an clientseitig habe ich auch schon gedacht allerdings wollte ich sehr wenig bis garkein JS verweden ... Überleg einmal, ein User mit JS = off kann quasi das form net benutzen und das fände ich traurig ... Ich habs mittlerweile gelöst allerdings nen bisl "ünschön" nur ich habe keine lust mich die ganze zeit an so einem problem fest zuhalten ... habe einfach die ausgabe mit nem div verziert und nen style="width:180; overflow:auto" gemacht ... siehst zwar net so schön aus aber funktioniert soweit gruss sven Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.