Wer kennt sie nicht, kleine Smileys die man in Foren oder Gästebüchern seinem Text hinzufügen kann.
In den meisten dieser Foren oder Gästebüchern ist ja HTML Code an sich verboten oder wird gefiltert. Wie das geht das der Text :) zum Bild wird und beim editieren des Textes aus einem
<img src Tag wieder ein :) Textsmiley das will ich hier erklären.
# hier werden die bei HTML typischen Anfangs und Endtag Klammern umgewandelt
# Es wird in dem Beispiel davon ausgegangen das das Formularfeld "eintrag" heisst
$eintrag =~ s/</</g;
$eintrag =~ s/>/>/g;
# hier werden Zeilenumbrüche zu <br> Tags
$eintrag =~ s/\n/<br>/g;
# Hier nun wird per Mustervergleich aus dem Textsmiley ein IMG SRC Tag
# der eine Bildanzeige des Smileys ermöglicht
$eintrag =~ s/\:\)/<img src=\"$smilieurl\/smile.gif\" border=\"0\">/g;
$eintrag =~ s/\:D/<img src=\"$smilieurl\/biggrin.gif\" border=\"0\">/g;
$eintrag =~ s/\;\)/<img src=\"$smilieurl\/wink.gif\" border=\"0\">/g;
$eintrag =~ s/\:censored:/<img src=\"$smilieurl\/censored.gif\" border=\"0\">/g;
$eintrag =~ s/\:cool:/<img src=\"$smilieurl\/cool.gif\" border=\"0\">/g;
$eintrag =~ s/\:oops:/<img src=\"$smilieurl\/eek.gif\" border=\"0\">/g;
$eintrag =~ s/\:engel:/<img src=\"$smilieurl\/engel.gif\" border=\"0\">/g;
$eintrag =~ s/\:\(/<img src=\"$smilieurl\/frown.gif\" border=\"0\">/g;
$eintrag =~ s/\:rotwerd:/<img src=\"$smilieurl\/rotwerd.gif\" border=\"0\">/g;
$eintrag =~ s/\:smokin:/<img src=\"$smilieurl\/smokin.gif\" border=\"0\">/g;
Will man nun den Text editieren muss der Vorgang umgekehrt werden. Warum wird schnell klar.
Beim erneuten abspeichern würde aus den Bildtags per IMG alles herausgefiltert werden durch:
$eintrag =~ s/</</g;
$eintrag =~ s/>/>/g;
Auch wird der zu editierende Text durch das umwandeln viel besser lesbarer.
Also drehen wir das halt um beim editieren:
# HTML und <br> Tags umwandeln
$eintrag =~ s/</</g;
$eintrag =~ s/>/>/g;
$eintrag =~ s/<br>/\n/g;
# Bild URL zu Text Smilie umwandeln
$eintrag =~ s/<img src=\"$smilieurl\/smile.gif\" border=\"0\">/:\)/gi;
$eintrag =~ s/<img src=\"$smilieurl\/biggrin.gif\" border=\"0\">/:D/gi;
$eintrag =~ s/<img src=\"$smilieurl\/wink.gif\" border=\"0\">/;\)/gi;
$eintrag =~ s/<img src=\"$smilieurl\/censored.gif\" border=\"0\">/:censored:/gi;
$eintrag =~ s/<img src=\"$smilieurl\/cool.gif\" border=\"0\">/:cool:/gi;
$eintrag =~ s/<img src=\"$smilieurl\/eek.gif\" border=\"0\">/:oops:/gi;
$eintrag =~ s/<img src=\"$smilieurl\/engel.gif\" border=\"0\">/:engel:/gi;
$eintrag =~ s/<img src=\"$smilieurl\/frown.gif\" border=\"0\">/:\(/gi;
$eintrag =~ s/<img src=\"$smilieurl\/rotwerd.gif\" border=\"0\">/:rotwerd:/gi;
$eintrag =~ s/<img src=\"$smilieurl\/smokin.gif\" border=\"0\">/:smokin:/gi;
Nach dem abspeichern muss dann wieder erstere Routine die Smileys so in die Daten zurückschreiben das da ein IMG Tag ein Bild darstellen kann.
|