preg_match Suchmuster
Silva1234
- php
Hallo,
ich bitte um eurer Hilfe.
Ich bekomm es leider einfach nicht gebacken, das entsprechende Suchmuster zu schreiben, obwohl ich schon hier http://de.wikibooks.org/wiki/Websiteentwicklung:_PHP:_Reguläre_Ausdrücke
versucht habe alles nachzulesen und hier http://regexp-evaluator.de/evaluator alles ausprobiert habe.
Es geht mir um folgendes:
Ich möchte den String $x auf $y durchsuchen
$x = 'http://localhost/de/wasauchimmer'
$y = 'http://localhost/XX/'
dafür hab ich sowas als Suchmuster probiert
http://localhost/([a-zA-Z]{2})([/]?)([^a-zA-Z0-9_])
das sollte bewirken, dass überprüft wird, ob der String $x 'http://localhost/' dann zwei Buchstaben und dann eine Flash (oder auch nicht) enthält, und danach nichts mehr kommt.
Heißt:
$x = 'http://localhost/de/wasauchimmer'
====> Ausdruck gefunden
$x = 'http://localhost/de/'
====> Ausdruck gefunden
$x = 'http://localhost/de'
====> Ausdruck gefunden
$x = 'http://localhost/wasauchimmer'
====> Ausdruck NICHT gefunden
Wie kann ich das realisieren?
Silva1234
@@Silva1234:
nuqneH
Wie kann ich das realisieren?
Du prüfst, ob nach http://localhost/[a-zA-Z]{2} ein Schrägstrich (wenn du des Englischen nicht mächtig bist, sprich doch deutsch) (/) oder (|) das Ende ($) folgt.
Bedenke, dass Sprachkürzel länger als zwei Zeichen sein können.
Qapla'
Suchmuster: '!http://localhost/[a-zA-Z]{2}[/]?$!'
Funktioniert für den mittleren und unteren Fall.
Der erste Fall trifft allerdings nicht zu??
Ich bin des Englischen mächtig nur leider hat die Autokorrektur aus Slash Flash gemacht. =)
LG
@@Silva1234:
nuqneH
Suchmuster: '!http://localhost/[a-zA-Z]{2}[/]?$!'
Funktioniert für den mittleren und unteren Fall.
Der erste Fall trifft allerdings nicht zu??
Du hast ja auch angegeben, dass nach [a-zA-Z]{2} noch ein '/'* kommen darf (aber nicht muss), dann aber Schluss ist, also keine weiteren Zeichen mehr kommen dürfen.
Ich hatte dir die Lösung doch schon genannt: Slash oder Ende (/|$).
Qapla'
* Bei einem einzelnen Zeichen brauchst du keine Zeichenklasse. Du kannst die eckigen Klammer weglassen.
Suchmuster: '!http://localhost/[a-zA-Z]{2}[/]?$!'
Funktioniert für den mittleren und unteren Fall.
Der erste Fall trifft allerdings nicht zu??
Dein ursprüngliches Suchmuster passt aber nicht zu deinen Solltreffern.
[^a-zA-Z0-9_] trifft auf ALLE Zeichen AUSSER denen nach dem ^ angegeben zu.
Du suchst wohl eher:
http://localhost/([a-zA-Z]{2})(?:/([a-zA-Z0-9_]+)|/?)$