2011-12-13 104 views
0

有没有一种简单的方法来跟踪preg_replace_callback中的当前索引?我需要更换下列各项,例如:获取preg_replace_callback中的当前索引?

{get}50{end get} 

随着$someArray[50]值。我不能将它适用于正则表达式,因为它们可以嵌套,所以相反,我得到{some characters}的所有实例,并且我想用substr来检索最内层的嵌套,然后是外层嵌套,等等。但是,该索引似乎没有传递给回调!有没有简单的方法,我错过了解决这个问题?

回答

2

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

+0

完美,我不知道这个功能存在!几乎修复了我的“全局命名空间”问题! +2! :D – Ryan

+0

现在添加完整示例;) –

3

由于明显的答案是不再可用,这里是为我工作得到更换当前索引:

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

正如你可以看到我们有我们自己维护索引的使用超出的-scope变量。

+0

字符串中匹配的索引,而不是先前匹配的数目。 – Ryan

+0

如果通过索引来表示位置,那么它是有道理的 – eithed

相关问题