preg_replace - kriege regulären ausdruck nicht hin
Andreas
- php
0 Ashura0 Andreas2 Tobias Kloth
Hallo,
habe noch nie reguläre Ausdrücke anwenden müssen und komme gerade nicht mehr weiter, obwohl es ziemlich einfach sein müßte:
Ich habe einen string, in dem ich die Buchstabenfolge "../" durch eine URL ersetzen möchte "www.xxx-xxx.de/".
Wie mache ich das mit preg_replace?
Das geht jedenfalls nicht, scheint mir:
$string = preg_replace("../", "www.xxx-xxx.de/", $string);
Punkte, Minuszeichen und Slash müssen doch escaped werden?
Die Fehlermeldung lautet:
Delimiter must not be alphanumeric or backslash
Danke für jede Hilfe!
Andreas
Hallo Andreas.
Mein Tipp fürs Verständnis: http://pcre.nophia.de/intro/index.php.
Gruß, Ashura
Hi,
nur zur Info: So ist es richtig:
$content = preg_replace("/..//is", "www.xxx-xxx.de/", $content);
Dieses Tool hier ist echt nützlich:
http://pcre.nophia.de/evaluate/
Gruss
Andreas
Hallo Andreas,
Ich habe einen string, in dem ich die Buchstabenfolge "../" durch eine URL ersetzen möchte "www.xxx-xxx.de/".
da reicht ein ganz simples str_replace:
$string = str_replace('../', 'http://www.example.com/', $string);
$string = preg_replace("../", "www.xxx-xxx.de/", $string);
Punkte, Minuszeichen und Slash müssen doch escaped werden?
jain. Der Punkt steht für ein beliebiges Zeichen, muss also maskiert werden. Mit dem Minus kann man in einer Zeichenklasse einen Zeichenbereich angeben (z.B. steht [a-z] für einen beliebigen kleinen Buchstaben) - außerhalb der Zeichenklasse hat das Minus aber afaik keine Sonderbedeutung und muss nicht maskiert werden. Der Slash muss lediglich maskiert werden, wenn er als Delimiter verwendet wurde.
Die Fehlermeldung lautet:
Delimiter must not be alphanumeric or backslash
du hast keinen Delimiter verwendet - also geht php davon aus, dass du \ als Delimiter verwenden willst, was aber nicht erlaubt ist.
Grüße aus Nürnberg
Tobias