获取preg_replace_callback中的当前索引?

时间:2011-12-13 03:43:13

标签: php regex

是否有一种简单的方法可以跟踪preg_replace_callback中的当前索引?我需要替换以下内容,例如:

{get}50{end get}

值为$someArray[50]。我不能把它放到正则表达式中,因为它们可以嵌套,所以我得到{some characters}的所有实例,我想用substr来检索最里面的嵌套,然后等等,等等。但是,索引似乎没有传递给回调!是否有一种简单的方法可以解决这个问题?

2 个答案:

答案 0 :(得分:4)

由于标记的答案已不再可用,以下是获取当前替换索引对我有用的内容:

$index = 0;
preg_replace_callback($pattern, function($matches) use (&$index){
    $index++;
}, $content);

正如您所看到的,我们必须使用超出范围的变量来维护索引。

答案 1 :(得分:2)

您可以先与preg_match_all&匹配PREG_OFFSET_CAPTURE选项并重建字符串,而不是使用默认的preg_replace方法。