Wir haben in baseportal mit allerlei
Sonderzeichen zu tun, die aus verschiedenen Sprachen und Standards kommen
und unterschiedlich behandelt werden müssen. So steht ein ä in
HTML z.B. für den Umlaut ä und wenn in einem HTML-Text, der selbst von
Hochkommas "..." umschlossen ist ein Hochkomma " vorkommt,
so muss dieses mit " umschrieben werden.
Gänzlich anders muss mit Sonderzeichen in einer URL verfahren werden.
So darf z.B. kein Leerzeichen darin vorkommen. stattdessen muss dafür ein
Plus-Zeichen + stehen. Was aber wenn man nun das Plus-Zeichen + selbst
angeben will? Dann muss dieses mit %2b geschrieben werden. Da nun damit
das %-Zeichen auch eine besondere Bedeutung hat, muss es mit %25 ebenfalls
kodiert werden.
Perl oder Javascript gehen wieder anders mit Sonderzeichen um.
baseportal stellt für diese Fälle eine Reihe von
Konvertierungsroutinen bereit:
convert_br |
Wandelt einen Zeilenumbruch in den
HTML-Code <br> |
convert_links |
Wandelt Texte innerhalb der Felder, die mit http:// eingegeben wurden, in Links um. Außerdem werden Emailadressen erkannt |
convert_html |
Wandelt &, ", <, >
und Umlaute (PC) in die HTML-Pendants &, ",
<, >, ä, ü usw. |
convert_quote |
Wandelt das Hochkomma ", den
Apostroph ' und den Backslash \ in ", \' und \\ |
convert_url |
Wandelt %, \, |, &, ", + in
den entsprechenden %xx-Code, sowie das Leerzeichen in ein + |
Beispiel:
<do action=input>
<loop code=perl>
out convert_html($Name)." - ";
out '<a
href="/cgi-bin/baseportal.pl?htx=/name/seite&cmd=del&Id=$_id"
onclick="return confirm(\''.convert_quote($Name).' wirklich
löschen?\')">Löschen?</a>';
out "<p>";
</loop>
|
"Entschärft" alle HTML-Spezialzeichen des Feldes
"Name" und gibt es, zusammen mit einem
"Löschen?"-Link aus. Klickt man auf diesen Link erscheint eine
Javascript-Abfrage, ob man dies wirklich will. Sollte der Feldinhalt
Apostrophe enthalten, werden diese gewandelt, so dass es zu keiner
Javascript-Fehlermeldung kommen kann. |
|