Hallo Felix,
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);
Du suchst den e-Modifier:
$modifiziert = preg_replace("/Datum (\d)+/e", "'Datum '.(abs(substr('\1', 0, 1))+1)", $usereingabe);
(oder so ähnlich, ungetestet)
So, wie Du es versucht hast, würde der Code (abs...) schon bevor preg_replace aufgerufen wird, ausgewertet. Wenn Du den Code jedoch in eine Zeichenkette setzt (wichtig) und dann preg_replace den e-Modifier (für "_E_xecute" oder "_E_val" - such Dir was aus) mitgibst, dann wird der Code bei jeder Ersetzung ausgeführt.
Siehe dazu auch das PHP-Handbuch.
Viele Grüße,
Christian