我需要一些帮助。由于我们不推荐使用preg_replace
,因此我必须将所有my preg_replace
转换为preg_replace_callback
...
我尝试了什么:
变化:
$template = preg_replace ( "#\\[aviable=(.+?)\\](.*?)\\[/aviable\\]#ies", "\$this->check_module('\\1', '\\2')", $template );
要:
$template = preg_replace_callback ( "#\\[aviable=(.+?)\\](.*?)\\[/aviable\\]#isu",
return $this->check_module($this['1'], $this['2']);
$template );
错误:
Parse error: syntax error, unexpected 'return'
答案 0 :(得分:9)
callback需要是一个带有一个参数的函数,这是一个匹配数组。您可以传递任何类型的callback,包括anonymous function。
$template = preg_replace_callback(
"#\\[aviable=(.+?)\\](.*?)\\[/aviable\\]#isu",
function($matches) {
return $this->check_module($matches[1], $matches[2]);
},
$template
);
(为了在匿名函数中使用$this
,需要PHP> = 5.4.0)