如何在PHP中使用preg_replace_callback
中的局部变量。
我有以下代码:
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 :(得分:6)
最简单的方法是使用匿名回调:
$str = preg_replace_callback($regExp,function($match) use ($some_local_variable) {
// do something
},$str);
请注意,您可以通过这种方式添加多个变量,但它会在定义函数时创建该变量的副本(如果您将其分配给变量以进行多次使用,这很重要)。如果您想要变量的“实时”引用,请使用&$some_var
。
当然,这需要PHP 5.3或更新版本。