Tobias Kloth: preg_replace - kriege regulären ausdruck nicht hin

Beitrag lesen

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