NonSpam-Worte |
Top Previous Next |
Beispielsprojekte > Reine Text-Parser > NonSpam-Worte
Das im folgenden beschriebene Projekt Nonspamwords.ttp eignet sich gut dazu einen ersten Test der Funktion des IMP-Filters nach der erstmaligen Installation durchzuführen. Er sollte dazu mit hoher Priorität aufgerufen werden.
Es gibt eine Menge Spamihilator-Filter, die dazu dienen, Spam aus den empfangenen E-Mails herauszufiltern. Demgegenüber verfolgt das Projekt Nonspamwords.ttp eine positive Strategie. E-Mails, die bestimmte Schlüsselworte enthalten, sollen als Nicht-Spam vor der folgenden negativen Filterung geschützt werden. Solche Schlüsselworte können der eigene Name oder Firmenname sein, oder auch eigene Produktbezeichnungen oder Begriffe zu eignen besonderen Interessengebieten.
{{ int iResult = 0; }} SKIP? ( ( "Spamihilator" | "TextTransformer" | "tetra" ) {{ iResult = 1; }} SKIP? )? {{ out << iResult; }}
Hier wird das Resultat nicht direkt in die Ausgabe geschrieben, sondern in der Variablen iResultat zwischengespeichert. Erst zum Schluss wird der Wert mit der Anweisung "out << iResultat" ausgegeben. Bei der Deklaration (Erzeugung) den Variablen mit "int iResultat = 0" wird ihr gleich der für Indifferenz stehende Wert 0 zugewiesen. Dieser Wert wird nur geändert, wenn die äußere Klammer (...)? durchlaufen wird. Das Fragezeichen '?' bedeutet - wie bei den regulären Ausdrücken - dass der Ausdruck vor dem Fragezeichen optional ist. Optional ist das Vorkommen eines der Worte, die durch das oder-Zeichen '|' voneinander getrennt sind.
( "Spamihilator" | "TextTransformer" | "tetra" ) {{ iResult = 1; }} SKIP?
Wenn eines der Worte im Text gefunden wird, wird der für Nicht-Spam stehende Wert 1 der Variablen iResult zugewiesen. Dann wird der wahrscheinlich nachfolgende Textabschnitt mit dem zweiten SKIP bis zum Ende übersprungen. Wenn keines der Nonspam-Worte im Text vorkommt, wird mit dem ersten SKIP der gesamte Text erkannt.
Um mehr mögliche Schreibweisen der NonSpamwörter abzudecken, wurde im TextTransformer in den Projektoptionen die Groß-/Kleinschreibung abgeschaltet.
Durch zwei kleine Modifikationen, könnte dieses Projekt mit dem Emptymail-Projekt kombiniert werden:
{{ int iResult = 0; }} ( SKIP ( ( "Spamihilator" | "TextTransformer" | "tetra" ) {{ iResult = 1; }} )? | {{ iResult = -1; }} ) {{ out << iResult; }}
In der "leere" Alternative "| {{ iResult = -1; }}" wird nur eine Aktion ausgeführt, aber es wird kein Text konsumiert. Sie macht den umgebenden Klammerausdruck auch ohne '?' optional.
|