是否有一种简单的方法可以跟踪preg_replace_callback
中的当前索引?我需要替换以下内容,例如:
{get}50{end get}
值为$someArray[50]
。我不能把它放到正则表达式中,因为它们可以嵌套,所以我得到{some characters}
的所有实例,我想用substr
来检索最里面的嵌套,然后等等,等等。但是,索引似乎没有传递给回调!是否有一种简单的方法可以解决这个问题?
答案 0 :(得分:4)
由于标记的答案已不再可用,以下是获取当前替换索引对我有用的内容:
$index = 0;
preg_replace_callback($pattern, function($matches) use (&$index){
$index++;
}, $content);
正如您所看到的,我们必须使用超出范围的变量来维护索引。
答案 1 :(得分:2)
您可以先与preg_match_all
&匹配PREG_OFFSET_CAPTURE
选项并重建字符串,而不是使用默认的preg_replace
方法。