1

如何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是一个正则表达式。这两个定义都很好。

谢谢你的帮助。

4

1 回答 1

7

最简单的方法是使用匿名函数作为回调:

$result = preg_replace_callback(
    $pattern,

    function ($match) use ($variable) {
        // do something
    },

    $subject
);

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

当然,使用箭头函数需要 PHP 7.4 或更新版本。

于 2013-04-10T19:08:40.820 回答