2011-12-13 101 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

相關問題