Dirk: preg_replace() / Regex Frage

Hallo zusammen,

ich versuche mit preg_replace() einen Tag in einem String zu ersetzen, komme aber absolut nicht vorwärts und wende mich daher an euch:

{tag opt=1 opt=2 ...replace="true"} (preg_replace soll zuschlagen)
{tag opt=1 opt=2 ...} (preg_replace soll nicht zuschlagen)

Die Parameter opt sind dynamisch und haben keinen festen Wert oder eine feste Anzahl.

$text = preg_replace("/{tag (.*)}/","/x{tag (.*)}y/",$text);

Nach dem Replace soll folgendes passieren:

{tag opt=1 opt=2 ...replace="true"} -> x{tag opt=1 opt=2 ...replace="true"}y

Wobei xy steht hier für einen String der vorher in preg_replace() gesetzt wurde.

Kann mir hierbei jemand helfen?

Danke & Viele Grüße
Dirk

  1. @@Dirk:

    nuqneH

    {tag opt=1 opt=2 ...replace="true"} -> x{tag opt=1 opt=2 ...replace="true"}y

    Dein Suchmuster beginnt mit '{', dann kommen beliebig viele Zeichen außer '}', dann kommt 'replace="true"', dann '}'. Und das ganze willst du dir merken, damit du es durch x$1y ersetzen kannst.

    Näheres in http://de.selfhtml.org/perl/sprache/regexpr.htm@title=SELFHTML.

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
  2. Hi,

    $text = preg_replace("/{tag (.*)}/","/x{tag (.*)}y/",$text);

    Wobei xy steht hier für einen String der vorher in preg_replace() gesetzt wurde.

    Du meinst also, dass x und y jeweils Back-References sein sollen? Wie die in der Ersatz-Zeichenkette zu notieren sind, kannst du im Manual nachlesen.

    Und die irrige Annahme(?), auch in der Ersatz-Zeichenkette bräuchte es Delimiter wie im regulären Such-Ausdruck, solltest du korrigieren.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?