2013-04-10 90 views
1

如何在PHP中使用preg_replace_callback中的局部變量。 我有以下代碼:在preg_replace_callback中使用本地變量 - PHP

function pregRep($matches) 
{ 
global $i; $i++; 

if($i > 2) 
{  
    return '#'.$matches[0]; 
} 
else 
{ 
return $matches[0]; 
} 
} 

$i = 0; $str = preg_replace_callback($reg_exp,"pregRep",$str); 

而且還$str是一個字符串,$reg_exp是一個正則表達式表達。這兩個都有明確的定義。

感謝您的幫助。

+0

使用global'關鍵字的'是,在一般情況下,[代碼氣味](http://en.wikipedia.org/wiki/Code_smell)。 – cmbuckley 2013-04-10 19:32:32

回答

5

最簡單的方法是用一個匿名的回調:

$str = preg_replace_callback($regExp,function($match) use ($some_local_variable) { 
    // do something 
},$str); 

請注意,您可以通過這種方式添加多個變量,但因爲它是被定義的函數時,它會創建該變量的副本(此如果你將它分配給一個變量用於多種用途,這很重要)。如果你想要一個「活」的參考變量,使用&$some_var

當然,這需要PHP 5.3或更高版本。