Preg_replace \n beim Ersatz

Hi bplacedler,

wenn ich die funktion preg_replace anwende, also z.B.

$str = "egal"; $str = preg_replace('#(e)(gal)#u', '\1\n\2', $str); echo $str;
dann wird bei mir \n nicht als newline interpretiert sondern auch wirklich als \n ausgegeben (genauso \t und \r)
brauche aber newline im Ersatz?

der output ist also

ich brauche abere gal

wer kann helfen?
danke

php.net/manual/en/language.types.string.php

gut zu wissen

doch wenn ich " " statt ’ ’ verwende ist das ergebnis dies

Na die Backslashes, die wirklich welche sein sollen, musst du dann natürlich maskieren.
Oder du nimmst gleich das Dollarzeichen, um die Back References anzusprechen.

haha, ja war doof

hast mich ma wieder gerettet chrisb
dank dir :wink:

Hallo Morpheus,

preg_replace() benötigt man gar nicht so häufig. Es ist eine gute Möglichkeit, mit komplexe Suchmustern Ersetzungen zu erzeugen. str_replace() arbeitet für einfache Aufgaben schneller; zudem ist es auch übersichtlicher. Dein Beispiel könnte also so aussehen:

$str = "egal"; $str = str_replace('egal', "e\ngal", $str); echo $str;

Gruß aus Berlin

Ja ich weiß, danke
aber meine Suche ist schon etwas komplexer als “egal” (war ja nur ein knappes beispiel) und mit str_replace nicht zu machen

grüße zurück aus berlin ;D

man kann aber auch viel mit strstr/strrchr oder strpos und substr zaubern. Das bitte nicht vergessen :wink:

und nicht zu vergessen: alle regexes sind - zu mindest in php - wahre resourcenfresser! (siehe http://swtch.com/~rsc/regexp/regexp1.html und noch weitere fast 3Mi. docs im netz).