Hallo zusammen,
ich möchte mir gerade ein pattern für preg_match basteln. Es geht darum zu überprüfen ob $_SERVER['REQUEST_URI'] die richtige Formatierung hat. Dazu habe ich zuerst dieses pattern verwendet.
Die Variable $uri enthält $_SERVER['REQUEST_URI'].
Zuerst hat es auch das gemacht was ich wollte, aber leider gibt es da ein Problem. URLs wie z.B.
/class/method=
sind mit diesem pattern erlaubt. Aber ich hätte gerne folgende festgelegte Formatierung.
/class/method/param1
oder
/class/method/param1/param2
oder
/class/method/param1/?var=test
im ersten Teil kommt die Klasse (nur Buchstaben erlaubt).
der 2.Teil soll die Methode der Klasse sein (ebenfalls nur Buchstaben erlaubt).
ab dem 3.Teil sollen Parameter übergeben werden können (Buchstaben und Zahlen).
Und natürlich soll auch $_GET erlaubt werden.
Leider hab ich nun das Problem das es ja mal vorkommen kann das in der URL nur /, /class oder /class/method stehen kann. Dazu will ich später in der Klasse dann Default Actions aufrufen.
Das ganze dient für eine selbst geschriebene Router Klasse. Für mich scheint der pattern dann aber leider viel zu kompliziert zu werden. Habt ihr vielleicht eine Idee wie der pattern dann auszusehen hat oder eine andere Alternative?
ich möchte mir gerade ein pattern für preg_match basteln. Es geht darum zu überprüfen ob $_SERVER['REQUEST_URI'] die richtige Formatierung hat. Dazu habe ich zuerst dieses pattern verwendet.
PHP-Code:
preg_match("/^[A-Za-z?=\&%-\/]+$/", $uri)
Zuerst hat es auch das gemacht was ich wollte, aber leider gibt es da ein Problem. URLs wie z.B.
/class/method=
sind mit diesem pattern erlaubt. Aber ich hätte gerne folgende festgelegte Formatierung.
/class/method/param1
oder
/class/method/param1/param2
oder
/class/method/param1/?var=test
im ersten Teil kommt die Klasse (nur Buchstaben erlaubt).
der 2.Teil soll die Methode der Klasse sein (ebenfalls nur Buchstaben erlaubt).
ab dem 3.Teil sollen Parameter übergeben werden können (Buchstaben und Zahlen).
Und natürlich soll auch $_GET erlaubt werden.
Leider hab ich nun das Problem das es ja mal vorkommen kann das in der URL nur /, /class oder /class/method stehen kann. Dazu will ich später in der Klasse dann Default Actions aufrufen.
Das ganze dient für eine selbst geschriebene Router Klasse. Für mich scheint der pattern dann aber leider viel zu kompliziert zu werden. Habt ihr vielleicht eine Idee wie der pattern dann auszusehen hat oder eine andere Alternative?
Kommentar