RegEx um RewriteRules zu parsen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • RegEx um RewriteRules zu parsen

    Howdy,

    ich stelle mir hier wohl selber ein Bein oder geht es nicht einfacher?
    Habs mit cix's Regex-Tester sowohl lokal probiert und es führten nur diese Varianten zu einem halbwegs sinnvollen Ergebnis.

    Quellcode

    1. #^RewriteRule([ \t]{1,})([^ \t]*|(\"(.*)\"))([ \t]{1,})([^ \t]*|(\"(.*)\"))([ \t]*)(\[?)([a-zA-Z]*)(\]?)$#Ui
    2. #^RewriteRule([ \t]{1,})("?)([^"]*)("?)([ \t]{1,})("?)([^"]*)("?)([ \t]*)(\[?)([a-zA-Z]*)(\]?)$#Ui


    Angewendet werden, sollte es auf eines dieser (fiktiven) Beispiele:

    Quellcode

    1. RewriteRule ^imprint(\/?) index.php?menu=imprint
    2. RewriteRule "^imprint xyz(\/?)" "index.php?menu=imprint xyz"
    3. RewriteRule ^imprint(\/?) index.php?menu=imprint [QSA]
    4. RewriteRule "^imprint xyz(\/?)" "index.php?menu=imprint xyz" [QSA]


    Ich hab auch schon versucht sämmtliche ([ \t]{1,}) gegen (\s*) oder (\s{1,}) ausgetauscht - hat nicht funktioniert.
    Daher bitte ich um Hilfe, da mir die Dokumentationen, die ich über reguläre Ausdrücke gefunden habe, nicht geholfen haben.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von neckcracker ()

  • Im Grunde analysiere ich nur .htaccess-Datein. Diese werden in Zeilen gespalten und jeweils auf Tabs, Leerzeichen, etc getrimmt.
    Da in den Datein auch mod_rewrite Anwendung findet, möchte ich speziell die RewriteRules raus filtern.
    Der Befehl ansich interessiert mich herzlich wenig, eher die Argument - in diesem Fall z.B. ^imprint(\/?) oder index.php?menu=imprint.

    Wenn ich also mein Pattern mit preg_match auf die oben genannten Beispiele anwende, bekomm ich sowas raus:

    Quellcode

    1. PHP Version = 5.3.1
    2. PCRE Library Version = 7.9 2009-04-11
    3. Array
    4. (
    5. [0] => RewriteRule ^imprint(\/?) index.php?menu=imprint [QSA]
    6. [1] =>
    7. [2] =>
    8. [3] => ^imprint(\/?)
    9. [4] =>
    10. [5] =>
    11. [6] =>
    12. [7] => index.php?menu=imprint
    13. [8] =>
    14. [9] =>
    15. [10] => [
    16. [11] => QSA
    17. [12] => ]
    18. )
    Alles anzeigen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von neckcracker ()

  • Ich merke du möchtest mir helfen.
    Es geht mir darum den regulären Ausdruck zu vereinfachen. Das sollte durch die Titelzeile eigentlich schon bekannt sein.

    Ein mögliches Ergebnis wäre folgendes:

    Quellcode

    1. Array
    2. (
    3. [0] => RewriteRule ^imprint(\/?) index.php?menu=imprint [QSA]
    4. [1] => ^imprint(\/?)
    5. [2] => index.php?menu=imprint
    6. [3] => QSA
    7. )


    Im übrigen spielt es keine Rolle, dass im Suchtest weitere reguläre Ausdrücke sind.