控制正则表达式中的替换

时间:2011-09-19 00:54:16

标签: php regex

我有一个像

这样的字符串

test [test id="123" /] test [test id="234" /] [test id="345" /] test

如何用其他内容替换每个[test ... /],但是控制每个替换(按索引)?

我可能希望第一场比赛被替换为某些东西,但第二场比赛用其他东西替换

1 个答案:

答案 0 :(得分:2)

听起来像你想要preg_replace_callback()

$index = 0;

preg_replace_callback('/\[test\sid="(?P<id>.+?)"\s*\/\]/', function() use (&$index) {
    var_dump($index, func_get_args());
    $index++;

}, $str);

CodePad

您可以访问$index以确定您所在的替代品的迭代次数。