AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[RegEx] PHP-URLs ersetzen

Ein Thema von Matze · begonnen am 14. Feb 2010 · letzter Beitrag vom 14. Feb 2010
Antwort Antwort
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#1

[RegEx] PHP-URLs ersetzen

  Alt 14. Feb 2010, 17:26
Hallo,

ich habe URLs wie

Code:
http://domain.de/index.php?get=foo
Die soll nun ersetzt werden in

Code:
http://domain.de/foo/
Das mache ich über folgende RegEx:

Code:
(http://[^<>"]*?/)index\.php\?get=([a-z_]*)
Das ersetzt mir allerdings auch URLs, die weitere Parameter enthalten (bsp: ?get=foo&blubb=bla) und genau das möchte ich nicht. Wie muss ich meine RegEx ändern?
Die URL befindet sich übrigens mitten in einem String. Daher nützt mir ein "$" nichts.

Schön wäre auch, wenn das ganze mit so einer URL gehen würde:

Code:
http://localhost/website/index.php?get=foo
Also mit einem Unterverzeichnis. Doch das geht aktuell leider auch nicht.

Grüße, Matze
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

Re: [RegEx] PHP-URLs ersetzen

  Alt 14. Feb 2010, 17:35
Versuche mal mit einem Lock-Before ein nachfolgendes & zu verbieten
Code:
(http://[^<>"]*?/)index\.php\?get=([a-z_]*)(?<!&)
Hey, ich glaub langsam versteh ich diese gemeinen RegEx-Dinger.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: [RegEx] PHP-URLs ersetzen

  Alt 14. Feb 2010, 17:40
Ne, das ändert leider nichts.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

Re: [RegEx] PHP-URLs ersetzen

  Alt 14. Feb 2010, 17:45
Code:
(http://[^<>"]*?/)index\.php\?get=([a-z_]*)(?![&a-z_])

$1$2/
Stümmt, es war ja auch andersrum nötig -.-
> ein Lock-Behind
Und [a-z_] darf dann auch nicht vorkommen.

Oder über die extrem gierige Variante.
Code:
(http://[^<>"]*?/)index\.php\?get=([a-z_]*+)(?!&)
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

Re: [RegEx] PHP-URLs ersetzen

  Alt 14. Feb 2010, 18:02
Zitat:
[14.02.2010 17:53] Matze: das letzte tut nicht
[14.02.2010 17:53] himitsu: müßte eigentlich
[14.02.2010 17:53] Matze: das 1. auch net
Hmmmm , mit 'ner ordentlichen PCRE sollte das eigentlich gehn.
http://www.regex-tester.de/uc_880_de.html
Dann ebem anders.
Code:
(http://[^<>"]*?/)index\.php\?get=([a-z_]*)([^&a-z_])

$1$2/$3
Achte hierbei aber auf den anderen ReplaceString
und am Textende darf der zu ersetzende URL-Teil auch nicht liegen.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#6

Re: [RegEx] PHP-URLs ersetzen

  Alt 14. Feb 2010, 18:07
Zitat von himitsu:
Versuche mal mit einem Lock-Before ein nachfolgendes & zu verbieten
Richtige Idee, aber damit Matze auch was bei Google findet, nennen wir es lieber Look Ahead . Und das in deinem Code ist ein Look Behind

Problem dabei ist nur das Backtracking: Der Regex will dich ja nicht enttäuschen, also matcht er einfach nur "...?get=fo", schon steht dahinter kein "&" mehr . Machen wir ihn also wieder ein wenig dümmer durch eine Atomic Group:
Code:
(?>(http://([^<>"]*?/)+)index\.php\?get=([a-z_])*)(?!&)
(inkl. Unterverzeichnisse)

Edit: Jo, die Hälfte wurde ja schon gesagt...
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: [RegEx] PHP-URLs ersetzen

  Alt 14. Feb 2010, 19:06
Danke für eure Hilfe. Es hat bei mir nicht funktioniert (vermutlich lag's an mir).
Mit iner anderen Lösung konnte ich mein Vorhaben jedoch umsetzen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz