preg_replace <- ändert nicht alles!
Conny
- php
0 Nico0 Tabellenkalk1 ChrisB
$text ='Das ist eine {test} Beitrag';
echo preg_replace('{test}', 'Richtiger', $text);
Als Ergbniss kommt:
-----------------------------------------
Das ist eine {Richtiger} Beitrag
Es sollte aber
Das ist eine Richtiger Beitrag
Ohne die Klammern kommen
Weis jemand was ich da falsch mache?
Conny
Weis jemand was ich da falsch mache?
<?php $text ='Das ist eine {test} Beitrag';
echo preg_replace('/{test}/', 'Richtiger', $text);
?>
Weis jemand was ich da falsch mache?
<?php $text ='Das ist eine {test} Beitrag';
echo preg_replace('/{test}/', 'Richtiger', $text);
?>
Hallo!
Das ist natürlich richtig, aber interessant wäre ja auch eine Erklärung.
Ein Suchmuster für `preg_replace()`{:.language-php} muss in sog. [Pattern Delimiter](http://php.net/manual/de/regexp.reference.delimiters.php) (Musterbegrenzer) gepackt werden. Nach dem schließenden Begrenzer können noch eventuelle [Modifier](http://php.net/manual/de/reference.pcre.pattern.modifiers.php) angeben werden.
Meist verwendet man als Delimiter ein Zeichen, das im Suchmuster selbst nicht vorkommt, da man es sonst wieder escapen müsste um das Muster nicht vorzeitig zu beenden. Häufig verwendet: / ~ #
Aber auch Klammernpaare können als Delimiter dienen. Zitiere [manual](http://php.net/manual/de/regexp.reference.delimiters.php):
> It is also possible to use bracket style delimiters where the opening and closing brackets are the starting and ending delimiter, respectively. (), {}, [] and <> are all valid bracket style delimiter pairs.
Bei dem Suchmuster '{test}' werden die geschweiften Klammern als Delimiter angesehen und lediglich nach der Zeichenkette 'test' gesucht.
Schönen Abend, Robert
Das ist natürlich richtig, aber interessant wäre ja auch eine Erklärung.
Ich hab es nicht beantwortet weil ich es schlicht weg nicht wusste was ich darauf antworten kann. Habe nur sofort den Fehler gesehen. Bevor ich also eine falsche Antwort abgebe habe ich es einfach bleiben lassen und habe nur die Lösung gepostet.
Dafür war deine Antwort umso umfangreicher!
Hallo
Als Ergbniss kommt:
du meinst "Ergebnis"
Das ist eine {Richtiger} Beitrag
Es sollte aber
Das ist eine Richtiger Beitrag
wohl eher "Das ist ein richtiger Beitrag"
Weis jemand was ich da falsch mache?
Du hast übersehen, dass geschweifte Klammern in regulären Ausdrücken Sonderzeichen darstellen.
Gruß
Kalk
Hi,
Weis jemand was ich da falsch mache?
Du nimmst reguläre Ausdrücke für etwas, was auch mit einem simplen str_replace o.ä. ginge.
MfG ChrisB