Tom123: Funktion in "Ersatz" von preg_replace()

Beitrag lesen

Hallo zusammen,
bei der Verwendung von preg_replace() soll im Ersatz eine Funktion zum Einsatz kommen. Problem: Modifier "e" kann nicht verwendet werden (die Gründe für den Verzicht sind etwas komplizierter, lassen sich aber nicht beseitigen).

Folglich dachte ich an so etwas:

function erhoehen($n) { return $n++; }  
preg_replace("/Beispiel ([0-9]+)/", "Beispiel ".erhoehen('\\1'), "Beispiel 25");

(Das ist nur ein sinnfreies Beispiel)

Bei dieser Variante ohne den Modifier tritt aber ein seltsames Problem auf: $n in erhoehen() kann zwar per return zurückgegeben werden. Doch sobald man mit der Variable etwas anderes anstellt hat sie den Wert "\1". Das obige Beispiel würde nicht "Beispiel 26" zurückgeben, sondern einen Fehler, weil $n in erhoehen() ein String mit dem Wert "\1" ist. Schreibt man in erhoehen() return $n, so wäre die Ausgabe "Beispiel 25".

Was läuft da falsch?

Grüße
Tom123