Seite 1 von 2

Frage zu preg_replace

Verfasst: 09.07.2008 18:25
von TomW
Hallo,

Ich habe ein Verständnisproblem bei folgendem Code

Code: Alles auswählen

preg_replace(\$orig, \$repl, '\\0')
$orig ist hier ja das Suchmuster, $repl der Erasatz und \\0 sollte die Zeichenkette sein, aber bitte was ist das denn für Zeichenkette?

Jemand ne Erklärung?

Der Codeteil ist Teil eines größeren Codes, falls der benötigt wird sagt mir bescheid.

Gruß TomW

Verfasst: 09.07.2008 18:34
von atrox

Verfasst: 09.07.2008 18:46
von TomW
atrox hat geschrieben:http://de.php.net/preg_replace trifft es :)
Die Seite kenn ich schon, aber da habe ich nichts zu gefunden, oder aber ich habs übersehen, kannst du mir zeigen wo das genau steht?

TomW

Verfasst: 09.07.2008 19:36
von atrox
preg_replace ( $Suchmuster , $Ersatz , $Zeichenkette )
Durchsucht $Zeichenkette nach Übereinstimmungen mit $Suchmuster und ersetzt diese mit $Ersatz.

------------------------------------------
preg_replace($orig, $repl, '\\0')
Bei deinem Bespiel würde das bedeuten, nehme das Suchmuster $orig, suche danach in '\\0' und erstze die Fundstellen mit $repl.

Verfasst: 09.07.2008 19:46
von TomW
atrox hat geschrieben: Bei deinem Bespiel würde das bedeuten, nehme das Suchmuster $orig, suche danach in '\\0' und erstze die Fundstellen mit $repl.
Das war mir ja klar wie ich oben auch geschrieben habe, nur kann \\0 nicht die Zeichenkette sein, oder ist das eine Referenz auf irgendwas?

Aber wie finde ich dann das gegenstück zu dieser Referenz?

TomW

Verfasst: 09.07.2008 20:30
von atrox
Du übergibst \\0 an dritter Stelle und an dritter Stelle ist die Zeichenkette definiert in der gesucht wird.
Es kann höchstens sein, dass sich jemand im Komma geirrt hat.

Re: Frage zu preg_replace

Verfasst: 09.07.2008 20:47
von BB-BF-BM
Hallo!
TomW hat geschrieben:

Code: Alles auswählen

preg_replace(\$orig, \$repl, '\\0')
Dieser Code ist wahrscheinlich in einen String mit doppelten Anführungszeichen eingebettet, da sonst die $-Zeichen nicht maskiert werden müssten.

\\0 bzw. \0 (der doppelte Backslash ist ein maskierter einfacher) wird dabei eine Referenz auf einen eingeklammerten Ausdruck eines anderen Suchmusters sein (siehe php.net hier oder hier).

Es würde helfen, ein wenig mehr Code zu posten.

Verfasst: 10.07.2008 17:06
von TomW
Hier ist der komplette Code

Code: Alles auswählen

$message .= str_replace('\"', '"', substr(preg_replace('#(\>(((?>([^><]+|(?R)))*)\<))#eis', "preg_replace(\$orig, \$repl, '\\0')", '>' . $seg . '<'), 1, -1));
Auf waas bezieht sich jetzt das \\0?

TomW

Verfasst: 10.07.2008 18:58
von Pyramide
Auf
TomW hat geschrieben:(\>(((?>([^><]+|(?R)))*)\<))

Verfasst: 10.07.2008 19:01
von ScriptingBase
Doofe Frage: Auf was prüft dieses Muster?
(\>(((?>([^><]+|(?R)))*)\<))