2012-03-13 54 views
0

有人可以告訴我是否存在使用一個模式進行多次替換的可能性嗎?我有一個模式和替換數組,我試圖從數組中依次替換匹配。 like match => array [0] match => array [1] 等等。由於preg_replace php中的用法

回答

1

我會去與回調preg_replace

preg_replace_callback('/pattern/', function() { 
    static $replacements = array('foo', 'bar', 'baz'); 
    return array_shift($replacements); 
}, $subject); 

每個後續比賽將得到更換陣列的下一個條目。

+0

謝謝,似乎這是我需要的。 – 2012-03-13 13:37:42

+0

多一個時刻,如何不在回調函數中創建靜態數組,但通過參數傳遞呢?當我通過我的數組像'preg_replace_callback($ pattern,function($ arr){....},$ subject);'我得到了和以前相同的值。 – 2012-03-13 14:57:12

+1

你可以使用閉包方面來做到這一點:'...,function()使用($ arr){...},...'。 – deceze 2012-03-13 23:17:45