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 |
Ich möchte den Inhalt bzw. den Wert eines Attributs innerhalb eines Tags erfassen.
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.
Alle diese Varianten mit einem einzelnen regulären Ausdruck zu erfassen, wäre ziemlich kompliziert.
Viel einfacher ist das hier:
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.
Quelltext:
Wird erfasst von:
Aber nicht von:
Wenn ich den vollständigen Attributinhalt in die Variable \3 übernehmen möchte, schreibe ich:
Diese Seite wird nach und nach ausgebaut, so wie ich Zeit dafür finde.