Slash escapen?
am 03.10.2006 09:21:11 von MartinMuecke
Hallo,
ich habe eine Funktion,
die testest Straßennamen auf Korrektheit.
Bisher hat alles wunderbar funktioniert,
aber nun möchte ich auch die Möglichkeit einbauen,
dass jemand eine Straße eingeben kann,
wo die Hausnummer aus einem Bruch besteht.
Die Nummer selbst ist in meinem Ausdruck nicht enthalten,
nur der Bruch selber, also z.B. 1 / 2 oder / 2 (dann besteht die
Hausnummer nur aus einem Bruch, also z.B. Waldweg 1/2)
Irgendwie mag er aber den Slash nicht.
Ich bekomme folgende Meldung:
Warning: preg_match(): Unknown modifier '\'
Hier mein Teilausdruck:
$strassenNrBruch= "(\s?([1-9]\s?)?/\s?[1-9])?";
if (! preg_match("/^$strassenNrBruch$/",$wert) )
Muss man den Slash escapen, wenn ja, wie?
Konnte in Google nur was zu Backslash finden...
Re: Slash escapen?
am 03.10.2006 10:37:45 von Helmut Chang
Martin Mücke schrieb:
> Ich bekomme folgende Meldung:
>
> Warning: preg_match(): Unknown modifier '\'
>
>
> Hier mein Teilausdruck:
> $strassenNrBruch= "(\s?([1-9]\s?)?/\s?[1-9])?";
>
> if (! preg_match("/^$strassenNrBruch$/",$wert) )
^ ^
Du verwendest / als Patternbegrenzer. Dein Pattern eingesetzt ergibt:
if (!preg_match("/^(\s?([1-9]\s?)?/\s?[1-9])?$/",$wert))
^ ^
Anfang Ende
Alles was nach dem ersten Slash kommt, ist Pattern. Alles was nach dem
zweiten Slash kommt, sind Modifier. Und \ ist halt kein gültiger Modifier.
> Muss man den Slash escapen,...
In diesem Fall ja. Oder man verwendet einen anderen Begrenzer, der nicht
im Pattern selbst vorkommt:
preg_match("#^(\s?([1-9]\s?)?/\s?[1-9])?$#", $wert)
gruss, heli
Re: Slash escapen?
am 03.10.2006 12:42:18 von Gregor Kofler
Martin Mücke meinte:
> Ich hab zwar keine Ahnung warum,
??? Was ist an Helis ausführlicher Erläuterung unverständlich?
> aber es funktioniert.
No na.
Gregor
--
http://www.gregorkofler.at ::: Landschafts- und Reisefotografie
http://www.licht-blick.at ::: Forum für Multivisionsvorträge
http://www.image2d.com ::: Bildagentur für den alpinen Raum