Roi Danton
2009-04-19, 12:15:38
Folgendes soll aus einem Text gefiltert werden:
Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero [#232,nid,linktext="eigener Text mit vielen 8-bit Zeichen" Kommentar] eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus [#view_molecular,viewdisplay=page_1 Kommentar] est Lorem ipsum dolor sit amet [#8,tid Kommentar]. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr [#view_atomic,viewargs="Si&O" Kommentar]asd], sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat [#2098, Kommentar], sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.Alle werden mit drei Backreferences ausgelesen (Zahl/Text/ID, Optionen mit Komma getrennt, Kommentar). Das (für mich) Schwierige ist der Tag mit linktext="viele Zeichen erlaubt". Der Ausdruck für diese Tags ist:
\[#([0-9a-zA-Z_]+),((?:[0-9a-zA-Z=,]*(?:"[^"\r\n]*")*)*) ([^\]\r\n]+)\]Für die einzelnen Tags funktionierts, allerdings nicht für alle Tags zusammen (die Tags werden vom Filter nicht umgewandelt und auch nicht mehr angezeigt, leider ohne sichtbare Ausgabe von PHP Fehlern). Ich vermute, dass in der Regex ein Bug drin ist. Wahrscheinlich ist für die mittlere Backreference ein anderer Ansatz nötig:((?:[0-9a-zA-Z=,]*(?:"[^"\r\n]*")*)*)Sowohl
nid,nolink,translation=en
tid
linktext="äußerst süßes Öl",viewid
(kein Zeichen)sollen erfasst werden. Das Leerzeichen darf nur innerhalb der Anführungszeichen stehen, da der Kommentar von den Optionen durchs Leerzeichen getrennt wird.
Hat jemand einen sinnvolleren Ausdruck im Kopf?
Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero [#232,nid,linktext="eigener Text mit vielen 8-bit Zeichen" Kommentar] eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus [#view_molecular,viewdisplay=page_1 Kommentar] est Lorem ipsum dolor sit amet [#8,tid Kommentar]. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr [#view_atomic,viewargs="Si&O" Kommentar]asd], sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat [#2098, Kommentar], sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.Alle werden mit drei Backreferences ausgelesen (Zahl/Text/ID, Optionen mit Komma getrennt, Kommentar). Das (für mich) Schwierige ist der Tag mit linktext="viele Zeichen erlaubt". Der Ausdruck für diese Tags ist:
\[#([0-9a-zA-Z_]+),((?:[0-9a-zA-Z=,]*(?:"[^"\r\n]*")*)*) ([^\]\r\n]+)\]Für die einzelnen Tags funktionierts, allerdings nicht für alle Tags zusammen (die Tags werden vom Filter nicht umgewandelt und auch nicht mehr angezeigt, leider ohne sichtbare Ausgabe von PHP Fehlern). Ich vermute, dass in der Regex ein Bug drin ist. Wahrscheinlich ist für die mittlere Backreference ein anderer Ansatz nötig:((?:[0-9a-zA-Z=,]*(?:"[^"\r\n]*")*)*)Sowohl
nid,nolink,translation=en
tid
linktext="äußerst süßes Öl",viewid
(kein Zeichen)sollen erfasst werden. Das Leerzeichen darf nur innerhalb der Anführungszeichen stehen, da der Kommentar von den Optionen durchs Leerzeichen getrennt wird.
Hat jemand einen sinnvolleren Ausdruck im Kopf?