Я хочу найти число в строке, добавить к нему единицу и заменить ее. Они не работают:
$new_version =
preg_replace("/str/(\d+)str/", "str/".("$1"+1)."str", $original);
$new_version =
preg_replace("/str/(\d+)str/", "str/".(intval("$1")+1)."str", $original);
Где «str» — это очень идентифицируемая строка, каждая сторона числа (и не содержащая чисел).
Я понимаю, что могу сделать это более чем в одной строке кода довольно легко, но кажется, что это должно быть возможно.
Использовать preg_replace_callback






Только с помощью str_replace вы можете получить номер из строки, добавить к нему единицу и заменить старый номер новым:
$str = 'In My Cart : 11 items';
$nb = preg_replace('/\D/', '', $str);
$nb += 1;
$str = str_replace($nb-1, $nb, $str);
echo $str;
Использование функции обратного вызова позволяет вам преобразовать совпадение в число и увеличить его, например:
preg_replace_callback(
"/str/(\d+)str/",
function($matches) { return "str/" . ((int)$matches[1] + 1) . "str"; },
$original
);
Пожалуйста, предоставьте пример ввода и вывода, чтобы мы могли взять его оттуда. Что ожидается от вашего сценария на основе входных данных, которые вы нам предоставляете.