gpt4 book ai didi

php - 如何在 php 中查找、递增和替换?

转载 作者:行者123 更新时间:2023-12-04 15:32:08 25 4
gpt4 key购买 nike

我有 \d+_\d+ 形式的字符串,我想在第二个数字上加 1。由于我的解释非常清楚,让我举几个例子:

  • 1234567_2 应该变成 1234567_3
  • 1234_10 应该变成 1234_11

这是我的第一次尝试:

$new = preg_replace("/(\d+)_(\d+)/", "$1_".((int)$2)+1, $old);

这会导致语法错误:

Parse error: syntax error, unexpected T_LNUMBER, expecting T_VARIABLE or '$' in [...] on line 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 函数时存在...

有什么想法吗?

最佳答案

$new = preg_replace("/(\d+)_(\d+)/e", '"$1_" . ("$2" + 1)', $old);

$1 等项实际上不是变量,它们是 preg_replace 将在替换文本中解释的字符串。所以没有办法使用直接基于文本的 preg_replace 来做到这一点。

但是,正则表达式上的 /e 修饰符要求 preg_replace 将替换解释为代码,其中标记 $1 等实际上将被视为变量。您以字符串形式提供代码,preg_replace 将在适当的上下文中eval() 它,使用其结果作为替换。

关于php - 如何在 php 中查找、递增和替换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4209978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com