У меня есть строки в форме \d+_\d+
, и я хочу добавить 1 ко второму числу. Поскольку мое объяснение очень ясное, приведу несколько примеров:
- 1234567_2 должно стать 1234567_3
- 1234_10 должно стать 1234_11
Вот моя первая попытка:
$new = preg_replace("/(\d+)_(\d+)/", "$1_".((int)$2)+1, $old);
Это приводит к синтаксической ошибке:
Ошибка разбора: синтаксическая ошибка, неожиданная
T_LNUMBER, ожидая T_VARIABLE или '$'
в [...] строке 201
Вот моя вторая попытка
$new = preg_replace("/(\d+)_(\d+)/", "$1_".("$2"+1), $old);
Это преобразует $ old = 1234567_2 в $ new = 1234567_1, что не является желаемым эффектом
Моя третья попытка
$new = preg_replace("/(\d+)_(\d+)/", "$1_".((int)"$2"+1), $old);
Это дает тот же результат.
Сделав эти попытки, я понял, что не понимаю, как новые переменные $ 1, $ 2, $ 3, .. действительно работают, и поэтому я не знаю, что еще попробовать, потому что кажется, что эти переменные больше не работают существует при выходе из функции preg_replace ...
Есть идеи?