Daniel Thoma: Regelwerk für Dateirechte aufbauen/interpretieren

Beitrag lesen

Hallo wahsaga,

Du musst also Regeln nach bestimmten Mustern erkennen. So wie Deine Beispiele aussehen, wären dazu einfache, reguläre Ausdrücke geeignet.
Du könntest also einfach eine Liste von regulären ausdrücken speichern.
Das alleine ist nun vermutlich nicht sehr effizient, da diese Liste sehr groß werden kann und bei jedem Zugriff alle regulären Ausdrücke ausgewertet werden müssten.

Wenn man einfache reguläre Ausdrücke wählt, also solche, die im eigentlichen Sinne regulär sind, kann man aber durch einmaliges Durchlaufen eines Pfades feststellen, ob ein regulärer Ausdruck zutrifft.

Ich würde mich also auf Dinge beschränken, die durch Zeichen | * und Aneinanderreihung darstellbar sind (also auch die üblichen Operatoren +? aber keine Lookahead-Konstrukte oder ähnliche komplizierte Features)

Man hat nun mehrere Möglichkeiten, das effizient zu implementieren:
1. Wenn die PHP-Regex-Engine die Ausdrücke optimiert und diese vielleicht sogar vorkompilieren kann: In diesem Fall kann man einfach alle Ausdrücke mit | zu einem zusammenbauen.
2. Man erzeugt selber einen optimierten regulären Ausdruck, der ohne "vorausschauen" verarbeitbar ist. Also z.B. würde aus abc|abd ab(c|d)
3. Man implementiert selbst eine Regexp-Engine, die die Ausdrücke vorkompilieren und schnell verarbeiten kann.

Grüße

Daniel