Использование результата поиска PHP preg_replace в математической операции? - PullRequest
0 голосов
/ 28 января 2019

Я хочу найти число в строке, добавить к нему и заменить его.Они не работают:

$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' - очень идентифицируемая строка, каждая сторона числа (и не содержит цифр).

Я понимаю, что могу это сделатьв нескольких строках кода довольно легко, но кажется, что это возможно.

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Использование функции обратного вызова позволяет привести соответствие к числу и приращению, например:

preg_replace_callback(
  "/str\/(\d+)str/",
  function($matches) { return "str/" . ((int)$matches[1] + 1) . "str"; }, 
  $original
);
0 голосов
/ 28 января 2019

Только с помощью str_replace вы можете получить номер из строки, добавить один к нему и заменить старый номер новым:

$str = 'In My Cart : 11 items';
$nb = preg_replace('/\D/', '', $str);
$nb += 1;
$str = str_replace($nb-1, $nb, $str);
echo $str;
...