Zum Inhalt springen

String Parser für Benutzereingaben


Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :P

gruss sven

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...