Felix Riesterer: wie eine backreference modifizieren?

Beitrag lesen

Liebe Selfer,

ich verwende in PHP die preg_replace()-Funktion. Nun möchte ich, dass in der Ersetzung der Wert aus einem gefundenen Subpattern (ich rede von einer Backreference) in modifizierter Form ersetzt wird. Ein Beispiel:

Aus "Datum 12" soll "Datum 2", oder aus "Datum 469" soll "Datum 5" werden.
Es soll also die gesamte Zahl durch die erste gefundene und um eins erhöhte Ziffer ersetzt werden. Ich dachte da an folgenden Code:

$usereingabe = "Datum 12";
$modifiziert = preg_replace("/Datum (\d)+/", (abs(substr(\1, 0, 1))+1), $usereingabe);

Der obige Code funktioniert nicht. Es wird "\1" innerhalb der geschachtelten Funktionen nicht mehr als Backreference erkannt, daher auch nicht als String zerlegt, um dann als Wert um eins erhöht wieder zurückgeschrieben zu werden.
Der Code gibt jedesmal "Datum 2" aus, da "\1" absolut als "1" erkannt wird, egal was als Subpattern erkannt wurde.

Wer weiß Rat?

Liebe Grüße aus Ellwangen,

Felix Riesterer.