preg_replace() / Regex Frage
Dirk
- php
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
@@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'
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