¿Cómo puedo encontrar, incrementar y reemplazar en php?

Tengo cadenas en la forma\d+_\d+ y quiero agregar 1 al segundo número. Como mi explicación es muy clara, déjame darte algunos ejemplos:

1234567_2 debería convertirse en 1234567_31234_10 debería convertirse en 1234_11

Aqui esta mi primer intento:

$new = preg_replace("/(\d+)_(\d+)/", "$1_".((int)$2)+1, $old);

Esto da como resultado un error de sintaxis:

Error de análisis: error de sintaxis, T_LNUMBER inesperado, esperando T_VARIABLE o '$6$#39; en [...] la línea 201

Aquí está mi segundo intento.

$new = preg_replace("/(\d+)_(\d+)/", "$1_".("$2"+1), $old);

Esto transforma $ old = 1234567_2 en $ new = 1234567_1, que no es el efecto deseado

Mi tercer intento

$new = preg_replace("/(\d+)_(\d+)/", "$1_".((int)"$2"+1), $old);

Esto produce el mismo resultado.

Al hacer estos intentos, me di cuenta de que no entendía cómo funcionaban realmente las nuevas variables $ 1, $ 2, $ 3 ... y no sé qué más probar porque parece que estas variables ya no existen al salir la función preg_replace ...

¿Algunas ideas?

Respuestas a la pregunta(3)

Su respuesta a la pregunta