Andreas: preg_replace - kriege regulären ausdruck nicht hin

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

  1. Hallo Andreas.

    Mein Tipp fürs Verständnis: http://pcre.nophia.de/intro/index.php.

    Gruß, Ashura

    --
    Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|
    Try it: Become an Opera Lover in 30 days
  2. 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

  3. 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