In diesem Fenster kannst du die einzelnen Webseiten-Filter aktivieren und deaktivieren.
Hinweis: Das Ausschneiden und Einfügen von Filtern mit Hilfe der beiden Schaltflächen ist ein rein interner Vorgang. Um Filter in die Zwischenablage zu exportieren oder daraus zu importieren, müssen die entsprechenden Befehle im Kontextmenü benutzt werden. Mehr dazu im folgenden Abschnitt...
Nach einem Rechtsklick auf einen oder mehrere markierte Filter erscheint ein Kontextmenü, über das Filter entweder als Text in die Zwischenablage exportiert oder umgekehrt daraus importiert werden können. Diese Funktion ist z.B. nützlich, wenn zusätzliche Filter aus einem Diskussionsforum eingefügt oder eigene Filter in ein Forum gestellt werden sollen.
Beim Importieren von Filtern aus der Zwischenablage kann es passieren, dass Proxomitron den Filter als fehlerhaft ablehnt. Wenn das passiert, dann stimmt irgend etwas mit dem grundsätzlichen Format des Filters nicht. Oft liegt es daran, dass der Filter unvollständig markiert und dadurch unvollständig in die Zwischenablage kopiert worden ist, sodass Zeilen oder Zeichen fehlen.
Manchmal gibt es auch Probleme mit den Leerzeichen, mit denen Proxomitron manche Zeilen einrückt. Da eine Kette aus mehreren normalen Leerzeichen in HTML-Seiten immer auf ein einzelnes Leerzeichen reduziert wird, ersetzen manche Diskussionsforen und ähnliche Systeme derartige Ketten automatisch durch abwechselnde Folgen aus normalen und nicht umbrechenden Leerzeichen. Je nach Browser werden diese zwei Typen von Leerzeichen auch beim Kopieren in die Zwischenablage als unterschiedliche Zeichen beibehalten. Diese nicht-normalen Leerzeichen müssen erst einmal durch normale ersetzt werden, bevor Proxomitron den Filter importieren kann.
Wenn du einen Seitenfilter bearbeitest oder einen neuen schreibst, dann passiert das normalerweise in diesem Fenster.
Bevor ein Filter ausgeführt wird, prüft Proxomitron, ob in diesem Feld etwas steht. Wenn ja, wird der Filter nur dann ausgeführt, wenn der in diesem Feld eingetragene Ausdruck auf den URL der betroffenen Seite bzw. Datei zutrifft.
Der Vergleich erfolgt allerdings nicht 1 zu 1, sondern nach folgendem Schema:
Wenn als URL-Entsprechung der Ausdruck *.de angegeben ist, dann wird der Filter nur auf Seiten von deutschen Domains angewandt. Wenn im Feld statt dessen (^*.de) steht, wird der Filter auf alle Seiten von nicht-deutschen Domains angewandt.
In diesem Feld ist der volle Satz an Befehlen und Metazeichen zulässig.
Die eingrenzende Entsprechung ist eine Möglichkeit, dem Vergleichsausdruck einen (meistens einfacheren) Vor-Ausdruck vorzuschalten, der die Quelltextbereiche auswählt, auf die danach der eigentliche Vergleichsausdruck angewandt werden soll.
In der eingrenzenden Entsprechung können alle Befehle, Metazeichen und Funktionen benutzt werden, die im Vergleichsausdruck benutzt werden können.
Wichtig: Sobald eine eingrenzende Entsprechung benutzt wird, wird der vom Filter bearbeitete Quelltextbereich nicht mehr durch den Vergleichsausdruck, sondern durch die eingrenzende Entsprechung festgelegt. Der Vergleichsausdruck muss dann unbedingt so formuliert werden, dass er den gesamten, von der eingrenzenden Entsprechung abgesteckten Quelltextbereich erfassen kann. Wenn das nicht beachtet wird, funktioniert der Filter nicht.
Wenn dein Filter z.B., wie auf dem Bild, nur innerhalb des öffnenden TABLE-Tags wirken soll, dann kannst du das im Vorhinein festlegen, indem du als eingrenzende Entsprechung einen Ausdruck wie <table*> einträgst. (Auf dem Bild wird statt dessen die Funktion $NEST() benutzt. Die Auswirkung ist in diesem Fall die gleiche.)
Als weitere Eingrenzungsmöglichkeit gibt es das Byte-Limit. Hier musst du immer einen Wert eintragen. Dieser Wert sollte nicht zu klein gewählt werden.
Während ein Filter eine Seite überprüft, sieht er immer nur einen Ausschnitt von x Bytes. Dieser Ausschnitt wird als Betrachtungsfenster oder Betrachtungsbereich bezeichnet. Die Größe des Betrachtungsbereichs wird von Proxomitron normalerweise dynamisch angepasst.
Zuerst wird nur der erste Teil des Vergleichsausdrucks gesucht. Wenn dieser erste Teil zutrifft, wird der Betrachtungsbereich vergrößert und dabei geprüft, ob der hinzukommende Quelltext auf den nächsten Teil des Vergleichsausdrucks zutrifft. Proxomitron arbeitet sich also schrittweise durch den Vergleichsausdruck und vergrößert dabei nach Bedarf das Betrachtungsfenster.
Das geht im Normalfall so lange weiter, bis das Ende des Vergleichsausdrucks erreicht ist und dieser komplett auf den betrachteten Quelltextbereich zutrifft und der Filter damit wahr wird, oder bis ein Punkt erreicht wird, ab dem der Vergleichsausdruck nicht mehr auf den betrachteten Quelltext zutrifft und der Filter unwahr wird. Wenn das passiert, bricht der Filter die Verarbeitung des Vergleichsausdrucks ab, schiebt den Anfang des Betrachtungsfensters ein Stück weiter im Quelltext und beginnt dort erneut mit der Suche nach einer Übereinstimmung mit dem Vergleichsausdruck.
Das Byte-Limit gibt an, wie groß der vom Vergleichsausdruck umspannnte Quelltextbereich maximal sein darf. Es ist also eine zusätzliche Obergrenze, die im Normalfall nicht erreicht werden sollte.
Der eingestellte Wert muss auf jeden Fall mindestens so groß sein, dass der Filter den in den Feldern "Eingrenzende Entsprechung" und "Vergleichsausdruck" festgelegten Bereich von Anfang bis zum Ende überblicken kann. Wenn du das Limit zu klein wählst, kann der Filter nicht gleichzeitig Anfang und Ende des zu bearbeitenden Quelltextes sehen und wird deshalb immer wieder ergebnislos abbrechen.
Der oft zu lesende Ratschlag, das Byte-Limit möglichst klein zu wählen, weil Proxomitron ansonsten zu viel puffern würde, ist nur in wenigen Fällen wirklich sinnvoll. Eingrenzende Entsprechung und Vergleichsausdruck sollten grundsätzlich so formuliert werden, dass sie nur die nötigste Menge Quelltext umspannen. Ein Filter, dessen Vergleichsausdruck sich immer wieder bis zum Byte-Limit ausdehnt und dann abbricht, verschwendet massiv Rechenzeit.
Wenn ein Filter ein Stück Quelltext verändert hat, dann markiert er es intern als "bearbeitet". Alle weiteren Filter überspringen diesen Abschnitt dann.
Oftmals ist es aber nötig, dass ein Stück Quelltext von mehreren Filtern nacheinander verarbeitet wird. Wenn man die Option "Mehrfache Verarbeitung erlauben" einschaltet, markiert der Filter den veränderten Quelltext nicht als "bearbeitet", sodass andere Filter ihn weiter bearbeiten können.
Unabhängig von dieser Option kann Quelltext normalerweise nicht zweimal durch den selben Filter verarbeitet werden. Das ist eine Schutzvorkehrung, mit der Proxomitron das Risiko von Endlosschleifen reduziert.
In dieses Feld wird der Ausdruck eingetragen, der den zu suchenden Quelltext beschreibt.
Die wichtigsten Metazeichen und Befehle findest du in der Befehlsreferenz.
Zeilenumbrüche haben keinerlei Einfluss auf die Funktion des Filterausdrucks. Sie können deshalb beliebig zur Strukturierung und besseren Übersicht eingefügt werden. Falls Zeilenumbrüche durch Filter erfasst oder eingefügt werden sollen, müssen entsprechende Metazeichen benutzt werden.
In dieses Feld wird der Text eingetragen, durch den der vom Vergleichsausdruck erfasste Text ersetzt werden soll.
Normalerweise will man zumindest einen Teil des ursprünglichen Quelltexts in das Endergebnis übernehmen. Dazu speichert man ihn im Vergleichsausdruck in eine oder mehrere Variablen und gibt diese dann im Ersetzungsausdruck an den Stellen an, an denen ihr jeweiliger Inhalt eingefügt werden soll.
Der im Bild gezeigte Filter sucht nach Zeichenfolgen und speichert alles was dazwischen liegt in Variablen. Beim Ersetzen werden die Inhalte der Variablen zusätzlich zum ersetzten Text wieder eingesetzt, sodass im Endeffekt nur die Angabe border="?" auf border="1" festgelegt wird.
Eine grundlegende Erklärung der Filtersprache findest du im Bereich "Die Filtersprache".
In den Kontextmenüs der verschiedenen Eingabefelder verstecken sich teilweise sehr nützliche Funktionen.
Das Testfenster bietet die Möglichkeit, Ausdrücke offline zu testen. Es kann für alle Eingabefelder und Eingabezeilen aufgerufen werden, in die man Vergleichsausdrücke eingeben kann.
Die Schaltfläche [Test] im Filter-Editor öffnet das Testfenster für den Haupt-Vergleichsausdruck des Filters. Für URL-Entsprechung und Eingrenzende Entsprechung lässt sich das Testfenster jeweils über das Kontextmenü aufrufen.
Das Filter-Testfenster besteht aus zwei Feldern. In das obere Feld trägt man den Testquelltext ein, der vom Filter verarbeitet werden soll. Im unteren Feld erscheint das Ergebnis des Tests bzw. der Auswertung.
Die Testfunktion wendet den aktuellen Filter auf den Testquelltext an und zeigt das Resultat im Ergebnisfeld. Wenn der Filter durch den Testquelltext nicht ausgelöst wurde, also nichts finden konnte, was dem Vergleichsausdruck entspricht, dann erscheint als Ergebnis "[No Match]". Wenn das Ergebnisfeld ganz leer bleibt, dann heißt das, dass der Filter den gegebenen Quelltext vollständig entfernen würde. Der Grund dafür steht in der Anleitung zur Filtersprache.
Die Auswertungsfunktion dient dazu, die Effizienz eines Filters zu bestimmen und hilft so bei der Optimierung von Ausdrücken.
Die Funktion wendet den aktuellen Filter normalerweise 1000 mal nacheinander auf den gegebenen Testquelltext an und gibt als Ergebnis die durchschnitliche Verarbeitungszeit für einen einzelnen Durchlauf in Millisekunden an. Wenn die Auswertung also 2 Sekunden dauert, dann erscheint als Ergebnis: "Avg time: 2.000000 (milliseconds)"
Damit die Auswertung eines extrem ineffizienten Filters nicht zu lange dauert, ist die Auswertungszeit auf 6 Sekunden begrenzt. Wenn diese Zeit erreicht wird, wird die Wiederholung abgebrochen und das Ergebnis aus den in dieser Zeit verarbeiteten Durchläufen errechnet. Wenn also nur 300 Durchläufe in 6 Sekunden geschafft wurden, dann ist das Ergebnis: "Avg time: 20.000000 (milliseconds)"
So langsam sollte kein Filter sein! Früher waren einige Millisekunden pro Filter noch normal. Auf aktuellen PCs werden so einfache Filter wie der auf den Bildern dargestellte aber in kaum noch messbarer Zeit verarbeitet.
Die untere Darstellungsgrenze der Auswertungsfunktion liegt ungefähr bei 16 Mikrosekunden (0.016000 Millisekunden). Darunter erscheint als Laufzeit nur noch "Avg time: 0.000000 (milliseconds)". Um einfache Filter dennoch beurteilen zu können, muss deshalb ein entsprechend langer Testquelltext benutzt werden.