Logo: Proxomitron - Ein Universeller Webfilter

Funktionsreferenz

Proxomitron unterstützt insgesamt 35 Funktionen:

Hilfsmittel zur Bereichserfassung: $AV $AVQ $NEST $INEST
Umgang mit Variablen: $SET $GET $TST
Maskierung von Sonderzeichen: $ESC $UESC $WESC
Einbinden externer Daten: $LST $FILE
Daten in Listen schreiben: $ADDLST $ADDLSTBOX $ASK
Meldungen ausgeben: $ALERT $CONFIRM $LOG
Abfragen von Header-Informationen: $URL $TYPE $IHDR $OHDR $RESP
Abfragen von Umgebungsinformationen: $CON $DTM $KEYCHK
Weitere Verarbeitung beeinflussen: $STOP $FILTER $USEPROXY $SETPROXY $LOCK $UNLOCK
Umleitung veranlassen: $JUMP $RDIR
Befehl ausführen: $EXEC

Hilfsmittel zur Bereichserfassung

$AV()

Aufgabe

Ich möchte den Inhalt bzw. den Wert eines Attributs innerhalb eines Tags erfassen.

Problem

In HTML können Attributwerte in einfache Anführungszeichen, in doppelte Anführungszeichen oder in gar keine Anführungszeichen eingeschlossen sein. Zudem dürfen innerhalb von mit doppelten Anführungszeichen eingeschlossenen Attributwerten einfache Anführungzeichen enthalten sein. Der umgekehrte Fall ist auch zulässig. Sogar der Typ von Anführungszeichen, mit dem der Attributinhalt eingefasst ist, darf innerhalb des Inhalts vorkommen, wenn jedem Anführungszeichen ein Backslash vorangestellt ist.

<tag attribut="attributwert">
<tag attribut='attributwert'>
<tag attribut="attri'but'wert">
<tag attribut=attributwert>
<tag attribut="at\"tribut\"wert">

Alle diese Varianten mit einem einzelnen regulären Ausdruck zu erfassen, wäre ziemlich kompliziert.

Lösung

Viel einfacher ist das hier:

<tag attribut=$AV(Unterausdruck)>

Die Funktion $AV ("Attribute Value") erfasst Attributwerte. Sie berücksichtigt dabei evtl. vorhandene Anführungszeichen nach den gleichen Regeln, die ein Browser beim Lesen des Quelltexts anwendet. Man braucht sich also keine Gedanken mehr um Anführungszeichen zu machen.

Wenn $AV(<Unterausdruck>) den Inhalt eines Attributs erfasst hat, dann wendet sie auf diese Zeichenfolge den als Parameter übergebenen Unterausdruck an. Der Gesamtausdruck wird wahr, wenn der Attributinhalt vollständig von diesem Unterausdruck erfasst wird.

Beispiel

Quelltext:

<tag attribut="Proxomitron">

Wird erfasst von:

<tag attribut=$AV(Proxomitron)>
<tag attribut=$AV(Prox*)>
<tag attribut=$AV(*omitron)>
<tag attribut=$AV(\w)>

Aber nicht von:

<tag attribut=$AV(oxomit)>
<tag attribut=$AV(Proxomit)>

Wenn ich den vollständigen Attributinhalt in die Variable \3 übernehmen möchte, schreibe ich:

<tag attribut=$AV(\3)>

Diese Seite wird nach und nach ausgebaut, so wie ich Zeit dafür finde.

© Michael Bürschgens <website@proxomitron.de>