Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在preg_replace_callback-PHP中使用局部变量_Php_Preg Replace Callback - Fatal编程技术网

在preg_replace_callback-PHP中使用局部变量

在preg_replace_callback-PHP中使用局部变量,php,preg-replace-callback,Php,Preg Replace Callback,如何在PHP中的preg_replace_回调中使用局部变量。 我有以下代码: function pregRep($matches) { global $i; $i++; if($i > 2) { return '#'.$matches[0]; } else { return $matches[0]; } } $i = 0; $str = preg_replace_callback(

如何在PHP中的preg_replace_回调中使用局部变量。 我有以下代码:

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是正则表达式。这两者都有很好的定义


感谢您的帮助。

最简单的方法是匿名回拨:

$str = preg_replace_callback($regExp,function($match) use ($some_local_variable) {
    // do something
},$str);
请注意,您可以通过这种方式添加多个变量,但它会在定义函数时创建该变量的副本。如果要将该变量分配给多个用途的变量,这一点很重要。如果需要对变量的实时引用,请使用&$some\u var


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

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

$str = preg_replace_callback($regExp,function($match) use ($some_local_variable) {
    // do something
},$str);
请注意,您可以通过这种方式添加多个变量,但它会在定义函数时创建该变量的副本。如果要将该变量分配给多个用途的变量,这一点很重要。如果需要对变量的实时引用,请使用&$some\u var

当然,这需要PHP5.3或更高版本。

全局关键字的使用通常是a。全局关键字的使用通常是a。