Sha*_*awn 2 php regex backreference preg-replace
我在表单中有字符串,\d+_\d+我想在第二个数字中添加1.由于我的解释非常清楚,让我举几个例子:
这是我的第一次尝试:
$new = preg_replace("/(\d+)_(\d+)/", "$1_".((int)$2)+1, $old);
Run Code Online (Sandbox Code Playgroud)
这会导致语法错误:
解析错误:语法错误,意外T_LNUMBER,在[...] 201行上预期T_VARIABLE或'$'
这是我的第二次尝试
$new = preg_replace("/(\d+)_(\d+)/", "$1_".("$2"+1), $old);
Run Code Online (Sandbox Code Playgroud)
这会将$ old = 1234567_2转换为$ new = 1234567_1,这不是所需的效果
我的第三次尝试
$new = preg_replace("/(\d+)_(\d+)/", "$1_".((int)"$2"+1), $old);
Run Code Online (Sandbox Code Playgroud)
这产生了同样的结果.
通过做这些尝试,我意识到我不明白新的$ 1,$ 2,$ 3,..变量是如何工作的,所以我真的不知道还有什么可以尝试,因为看起来这些变量在退出时不再存在preg_replace函数...
有任何想法吗?
$new = preg_replace("/(\d+)_(\d+)/e", '"$1_" . ("$2" + 1)', $old);
Run Code Online (Sandbox Code Playgroud)
该$1等条款实际上不是变量,它们是字符串,preg_replace将替换文本解读.所以没有办法使用基于文本的直接文件preg_replace.
但是,/e正则表达式上的修饰符要求preg_replace将替换解释为代码,其中标记$1等实际上将被视为变量.您提供的代码字符串,并preg_replace会eval()在适当的情况下它,使用它的结果作为替代品.
| 归档时间: |
|
| 查看次数: |
1970 次 |
| 最近记录: |