Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

String Parser für Benutzereingaben

Empfohlene Antworten

Veröffentlicht

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

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?

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.