Вы можете использовать preg_replace_callback
как:
function inc($matches) {
return ++$matches[1];
}
$input = preg_replace_callback("|(\d+)|", "inc", $input);
В основном вы сопоставляете числовую часть строки с использованием регулярного выражения \d+
и заменяете ее значением, возвращаемым функцией обратного вызова, которая возвращает увеличенное значение.
В качестве альтернативы это можно сделать с помощью preg_replace()
с модификатором e
как:
$input = preg_replace("|(\d+)|e", "$1+1", $input);