在preg_replace_callback中使用局部变量 - PHP

时间:2013-04-10 19:02:43

标签: php preg-replace-callback

如何在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是一个正则表达式。这两个都很明确。

感谢您的帮助。

1 个答案:

答案 0 :(得分:6)

最简单的方法是使用匿名回调:

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

请注意,您可以通过这种方式添加多个变量,但它会在定义函数时创建该变量的副本(如果您将其分配给变量以进行多次使用,这很重要)。如果您想要变量的“实时”引用,请使用&$some_var

当然,这需要PHP 5.3或更新版本。