使用PHP preg_replace match进行数学运算?

时间:2019-01-28 10:51:15

标签: php preg-replace

我想在字符串中找到一个数字,向其中添加一个,然后替换它。这些不起作用:

$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 :(得分:3)

使用回调函数可让您对数字和增量进行匹配,例如:

preg_replace_callback(
  "/str\/(\d+)str/",
  function($matches) { return "str/" . ((int)$matches[1] + 1) . "str"; }, 
  $original
);

答案 1 :(得分:0)

仅使用str_replace,您就可以从字符串中获取数字,并将其添加一个,然后用新的数字替换旧的数字:

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