Frage zu preg_replace

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
TomW
Mitglied
Beiträge: 351
Registriert: 02.05.2002 22:55
Wohnort: Eichelsee
Kontaktdaten:

Frage zu preg_replace

Beitrag 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
Computerprobleme??? -> http://www.weber-computerhilfe.de
Benutzeravatar
atrox
Mitglied
Beiträge: 242
Registriert: 08.08.2007 00:48
Wohnort: Ravensburg

Beitrag von atrox »

TomW
Mitglied
Beiträge: 351
Registriert: 02.05.2002 22:55
Wohnort: Eichelsee
Kontaktdaten:

Beitrag 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
Computerprobleme??? -> http://www.weber-computerhilfe.de
Benutzeravatar
atrox
Mitglied
Beiträge: 242
Registriert: 08.08.2007 00:48
Wohnort: Ravensburg

Beitrag 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.
TomW
Mitglied
Beiträge: 351
Registriert: 02.05.2002 22:55
Wohnort: Eichelsee
Kontaktdaten:

Beitrag 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
Computerprobleme??? -> http://www.weber-computerhilfe.de
Benutzeravatar
atrox
Mitglied
Beiträge: 242
Registriert: 08.08.2007 00:48
Wohnort: Ravensburg

Beitrag 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.
BB-BF-BM
Mitglied
Beiträge: 2179
Registriert: 28.10.2005 16:38
Wohnort: Essen

Re: Frage zu preg_replace

Beitrag 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.
TomW
Mitglied
Beiträge: 351
Registriert: 02.05.2002 22:55
Wohnort: Eichelsee
Kontaktdaten:

Beitrag 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
Computerprobleme??? -> http://www.weber-computerhilfe.de
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Auf
TomW hat geschrieben:(\>(((?>([^><]+|(?R)))*)\<))
KB:knigge
Benutzeravatar
ScriptingBase
Mitglied
Beiträge: 161
Registriert: 03.03.2007 09:20
Wohnort: Heidelberg
Kontaktdaten:

Beitrag von ScriptingBase »

Doofe Frage: Auf was prüft dieses Muster?
(\>(((?>([^><]+|(?R)))*)\<))
Antworten

Zurück zu „Coding & Technik“