Next: Funktionen für Erzeugung von
Up: Funktionen für die Erstellung
Previous: Funktion zum Ersetzen von
´html_substitute_data´ ersetzt in einem gegebenem Eingabestring
$string bestimmte Strings durch andere. Vor allem wird die Ersetzung
von Variablenbezeichnern durch Variablenwerte aus dem gegebenen Datentupel
$data damit realisiert. Weiterhin besteht die Möglichkeit sehr einfache
Bedingungen auszuwerten.
Es gibt 5 verschiedene Arten von Ersetzungen (Variablenname bei den
Punkten 1. bis 3. meint im folgenden einen String, der nur aus Klein/Groß-Buchstaben,
Zahlen und den Zeichen ``-`` und ``_'' besteht. Ist $complex_names_allowed
true, so sind auch noch die Zeichen ``[`` und ``]''
zugelassen):
- 1.
- String "$(keyname)", wobei keyname ein Variablenname
ist, wird ersetzt durch Wert des Datentupels $data[keyname] bzw.
ist der String $defaultkey nicht leer, so werden die Strings "$()"
und "$$" beide jeweils ersetzt durch den Wert
des Datentupels $data[$defaultkey], d.h. bei fehlendem keyname
wird $defaultkey verwendet;
Die Ersetzung findet jeweils nur statt, falls $data[keyname]
definiert ist oder $allflag true ist.
Diese Ersetzung findet außerdem nur dann statt, wenn Bit 0 von $subst_type
gesetzt ist.
- 2.
- Ähnlich zu 1.: der String "$[keyname]", wobei
keyname ein Variablenname ist, wird ersetzt durch den htmlencodeten
(z.B. Umlaute, ``<'',''>'',... codieren) Wert des Datentupels
$data[keyname] bzw.
ist der String $defaultkey nicht leer, so wird der String "$[]"
ersetzt durch den htmlencodeten Wert des Datentupels $data[$defaultkey],
d.h. bei fehlendem keyname wird $defaultkey verwendet;
Die Ersetzung findet nur statt, falls $data[keyname] definiert
ist oder $allflag true ist.
Außerdem findet diese Ersetzung nur statt, wenn Bit 1 von $subst_type
gesetzt ist.
- 3.
- Ähnlich zu 1.: der String "$<keyname>", wobei keyname
ein Variablenname ist, wird ersetzt durch den urlencodeten (für Verwendung
in Parameterstrings in URLs) Wert des Datentupels $data[keyname]
bzw.
ist der String $defaultkey nicht leer, so wird der String "$<>"
ersetzt durch den urlencodeten Wert des Datentupels $data[$defaultkey],
d.h. bei fehlendem keyname wird $defaultkey verwendet;
Die Ersetzung findet nur statt, falls $data[keyname] definiert
ist oder $allflag true ist.
Außerdem wird nur dann ersetzt, falls Bit 2 von $subst_type gesetzt
ist.
- 4.
- Falls der String $defaultkey nicht leer ist, wird der String
"$?%(<urlencodeter Vergleichswert>:<Ausgabe>)"
durch leeren String oder durch den String "<Ausgabe>"
ersetzt, je nachdem, ob der urlencodete Wert $data[$defaultkey]
ungleich oder gleich dem String "<urlencodeter Vergleichswert>"
ist. Dabei ist "<urlencodeter Vergleichswert>" ein
urlencodeter String und "<Ausgabe>" ein beliebiger
String, der kein ")" enthält.
Dies wird v.a. bei den Form-Elementen select, radio und checkbox
bei Benutzung des selected2 bzw. checked2-Flags ausgenutzt (siehe
´html_form_element´).
Diese Ersetzung findet nur statt, falls Bit 3 von $subst_type gesetzt
ist.
- 5.
- Ein String der Form "$?<bedingung>(<attributname>:<Ausgabe>)",
wobei der String "<bedingung>" nur aus Buchstaben
besteht sowie der String "<attributname>" kein ":"
und kein ")" und der String "<Ausgabe>"
kein ")" enthalten darf, wird ersetzt durch den
leeren String oder durch "<Ausgabe>", je nachdem,
ob die durch <bedingung> und <attributname> spezifizierte Bedingung
wahr ist oder nicht.
Zur Zeit sind folgende Bedingungen möglich:
Der Eingabe-String wird von links nach rechts nach den zu ersetzenden
Strings durchsucht und ggf. Ersetzungen vorgenommen. Insbesondere
wird ein Teilstring, der durch Ersetzung entstanden ist nicht noch
einmal neu durchsucht. Sonst wären unter Umständen unerwünschte Ersetzungen
die Folge. Denn dann könnte z.B. ein Variablenbezeichner der im Inhalt
einer Variable, d.h. im Datentupel steht (was ja z.B. aus der Datenbank
stammen kann und beliebige Strings enthalten kann) selbst ersetzt
werden, oder anders gesagt, wären die Variablenbezeichner nie als
echter Dateninhalt möglich.
´html_substitute_data´ war ursprünglich nur als Hilfsfunktion zu
den Tabellen- bzw. Form-Erzeugungsfunktionen gedacht. Sie wird jedoch
auch von einigen anderen Teilen des Workflowsystem, z.B. db-table-Funktionen
benutzt.
Sie hat die folgende Parameter:
- [$string:]vorgegebener String, in dem ggf. Ersetzungen durchzuführen
sind
- [$data:]gegebenes Datentupel, wobei ein Datentupel ein assoziatives
Array ist, bestehend aus beliebigen Key/Value-Paaren ist, z.b. wie
es von db_query als Repräsentation einer Zeile eines SQL-Ergebnisses
zurückgeliefert wird
- [$allflag:]boolsches Flag, falls true werden auch Variablenersetzungen
vorgenommen, für die im Datentupel kein Wert existiert, d.h. der Variablenbezeichner
wird dann durch den leeren String ersetzt und verschwindet damit aus
dem String
Wird z.B. Bei der Tabellenerzeugung verwendet.
- [$subst_type:]Bitvektor der angibt, welche Art von Ersetzung erlaubt
ist. Dabei wird eine Ersetzung erlaubt, falls entspr. Bit gesetzt
(Vgl. Liste der Ersetzungen oben):
- [Bit 0 (1):]Typ-1-Ersetzung, z.B. ``$(keyname)'' -> $data[keyname]
- [Bit 1 (2):]Typ-2-Ersetzung, z.B. ``$[keyname]'' -> htmlencoded
$data[keyname]
- [Bit 2(4):]Typ-3-Ersetzung, z.B. ``$<keyname>'' -> urlencoded
$data[keyname]
- [Bit 3(8):]Typ-4-Ersetzung, Vergleich von $data[$defaultkey]
mit festem Wert
- [Bit 4 (16):]Type-5-Ersetzung, NOT/NOTNULL-Bedingung für ein Wert
von $data
- [$defaultkey:]Name des Standardattributs für das Datentupel $data,
Verwendung siehe Liste der Ersetzungen oben
- [$complex_names_allowed:]boolsches Flag, falls true sind in Variablennamen
der Ersetzungen "$(keyname)", "$[keyname]"
und "$<keyname>" (Typ 1.-3.) außer Buchstaben,
Zahlen, "-" und "_" auch "]"
und "[" zugelassen
- [$startchar:]ggf. statt dem Zeichen '$' anderes Zeichen, das möglichen
Ersetzungspunkt im Eingabestring anzeigt, d.h. in den obigen Ausführungen
in allen Strings "$" durch dieses neue Zeichen
ersetzen;
ist z.B. $startchar="H", so lauten die zu ersetzenden
Strings nicht ``$(keyname)'', ``$()'', ``$$'',
``$[keyname]'', ``$[]'', ``$<keyname>'',
``$<>'', ``$?%(<urlencodeter Vergleichswert>:<Ausgabe>)''
und ``$?<bedingung>(<attributname>:<Ausgabe>)'', sondern "H(keyname)",
"H()", "HH", "H[keyname]",
"H[]", "H<keyname>", "H<>",
"H?%(<urlencodeter Vergleichswert>:<Ausgabe>)"
und"H?<bedingung>(<attributname>:<Ausgabe>)"
Rückgabe ist der Eingabe-String nach der Ersetzung.
Next: Funktionen für Erzeugung von
Up: Funktionen für die Erstellung
Previous: Funktion zum Ersetzen von
Copyright Munich Network Management Team