Social Software powered by Instant Communities
Springe direkt: zur Navigationzum Inhaltzur Sidebar

Archiv für 'regexp'

Symfony 1.0 und Regex in routing.yml

17.11.2008

Helge hatte neulich ja hier schon einmal was über die Regex Patterns in der routing.yml von Symfony geschrieben.
Nachdem ich heute fast wieder verrückt geworden bin, habe ich nun ein paar sinnvolle Dinge herausgefunden:

Ich habe versucht folgendes Pattern zu matchen:

numerischeId-UrlSafeTitle

Doch egal welches Pattern ich dafür verwenden wollte - wenn ich im Cache in die generierte Datei config_routng.yml.php schaute, wurde der zweite Teil meines Patterns immer auf mysteriöse Weise geändert:

Dies funktioniert:

id_title_route:  url: /:resourceIdTitle

param: { module: forum, action: view}
  requirements: { respurceIdTitle: ^[0-9]+-.w+ }

und ergibt genereriert im php File:

'resourceIdTitle' => '^[0-9]+-.w+',

Also Zahlen gefolgt von einem Bindestrich gefolgtvon Buchstaben. Leider matchen so noch keine Urls mit  Bindestrichen

Dies funktioniert nicht:

requirements:  { respurceIdTitle: ^[0-9]+-.[w-]+ }

Daraus wird:

'resourceIdTitle' => '^[0-9]+-.[0-9]+',

Merkwürdigerweise wird die zweite Chracter Class (das in den eckigen Klammern) immer zu “0-9″ konvertiert. Ich habe noch einige andere Lösungen probiert (z.B. ^[0-9]+-[^\/]*+) ,  die leider aber alle fehlschlugen mit dem selben merkwürdigen Ergebnis. Letztlich bin ich dann auf die Idee gekommen, einfach mal eine andere YML Syntax auszuprobieren:

id_title_route:  url: /:resourceIdTitle

param: { module: forum, action: view}

requirements:

  resourceIdTitle: "[0-9]+-[w+-]+"

Beim Definieren von Regex-Patterns in der routing.yml sollte man also immer diese Syntax benutzen, dann bleiben die Anweisungen so erhalten, wie man sie geschrieben hat. Ich hoffe damit ist das Thema ein für allemal vom Tisch :)

Zum Testen habe ich übrigens diesen Online Regex Tester benutzt, den ich sehr empfelen kann, falls es mal irgendwo hakt.

Update: die kurze Syntax funktioniert ebenfalls, wenn man die Regular Expression in Quotes setzt, nutzt man die lange Syntax, sind die Quotes nich erforderlich

You are currently browsing the archives for the regexp category.

Creative Commons License
This work is licensed under a
Creative Commons Attribution-Share Alike 2.5 License.
t8d blogged mit WordPress