Regex Ausdruck für Urls (Teil 2)
Erneuter Hilferuf für die Auflösung bei Urls
Ich verwende nun Dank der Hilfe eines Users dieses Forums für das Spliten der Urls folgenden Regex Ausdruck:
Prinzipiell klappt es so auch, jedoch werden auch Urls akzeptiert, bei denen in den jeweiligen Ausdrücken neben den angegebenen auch andere Zeichen vorkommen. Also zB "dexyz" anstelle von "de", oder "adminxyz" anstelle von "admin". Auch das Begrenzen der Länge mit {2} für die Sprache bringt nichts, da dann die restlichen zeichen aufgrund das optionaolen Slash in die <func> rutschen, was ja wiederum falsch ist...
Lg, Chris
Ich verwende nun Dank der Hilfe eines Users dieses Forums für das Spliten der Urls folgenden Regex Ausdruck:
'#^\/(?P<lang>de|en|fr|it)?\/?(?P<func>item|cat|fn|content|admin|my)?\/?(?P<text>\w)?\/?(?P<id_1>\d)?,?(?P<id_2>\d)?(?P<request>\?.*)?#i'
Prinzipiell klappt es so auch, jedoch werden auch Urls akzeptiert, bei denen in den jeweiligen Ausdrücken neben den angegebenen auch andere Zeichen vorkommen. Also zB "dexyz" anstelle von "de", oder "adminxyz" anstelle von "admin". Auch das Begrenzen der Länge mit {2} für die Sprache bringt nichts, da dann die restlichen zeichen aufgrund das optionaolen Slash in die <func> rutschen, was ja wiederum falsch ist...
Lg, Chris
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator masterG am 24.02.2013 um 18:37:45 Uhr
Ich hab deine RegEx in einen Codeblock gepackt. Bitte Formatierungshilfe beachten.
Content-ID: 202275
Url: https://administrator.de/forum/regex-ausdruck-fuer-urls-teil-2-202275.html
Ausgedruckt am: 26.12.2024 um 22:12 Uhr
3 Kommentare
Neuester Kommentar
Hallo,
Du solltest Dich mal ausgiebig mit Regulären Ausdrücken beschäftigen. Ich empfehle das Buch "Reguläre Ausdrücke" von Jeffrey E. F. Friedl (wenn man regex einmal begriffen hat benutzt man sie ständig ).
Für Deine Aufgabe könnte \b als Wortgrenze in Frage kommen (\B ist entsprechend "keine Wortgrenze"). Wird also nur das Wort "admin" gesucht, dann könnte passen.
Ich hab mir nochmal Deine URL-Beispiele aus dem Thread von gestern angesehen, wenn klar ist, dass die Zeichen '.' und '/' die Wörter begrenzen, dann kannst Du auch suchen mit
Ich arbeite normalerweise mit Perl und hab von PHP keine Ahnung. Jedoch wäre mein Ansatz für das Aufspalten einer URL folgenderdas heißt, ich würde die URL an den '/' (Slashes) aufspalten und alles was dazwischen ist in ein Array packen. Dann erhält man ausdas Array mit dem Inhaltwas erheblich einfacher zu verarbeiten ist.
Markus
Du solltest Dich mal ausgiebig mit Regulären Ausdrücken beschäftigen. Ich empfehle das Buch "Reguläre Ausdrücke" von Jeffrey E. F. Friedl (wenn man regex einmal begriffen hat benutzt man sie ständig ).
Für Deine Aufgabe könnte \b als Wortgrenze in Frage kommen (\B ist entsprechend "keine Wortgrenze"). Wird also nur das Wort "admin" gesucht, dann könnte
/\badmin\b/
Ich hab mir nochmal Deine URL-Beispiele aus dem Thread von gestern angesehen, wenn klar ist, dass die Zeichen '.' und '/' die Wörter begrenzen, dann kannst Du auch suchen mit
/[./](admin)[./]/
Ich arbeite normalerweise mit Perl und hab von PHP keine Ahnung. Jedoch wäre mein Ansatz für das Aufspalten einer URL folgender
@url = split /\//, $line ;
www.domain.com/de/kategoriename/Artikelname/12345,98765
www.domain.com
de
kategoriename
Artikelname
12345,98765
Markus