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
$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
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!
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)))*)\<))