我有一个preg_replace_callback
,它将闭包(匿名)函数作为第二个参数,它在本地运行非常好,但当我将其部署到实时环境时,会导致错误=>内部服务器错误500。当我移除闭包时,它就起作用了。
$regExPattern = '/'<%(?<content>.*?)%'>/';
$template = preg_replace_callback($regExPattern, function ($matches) use ($dataItem) {
if(isset($dataItem[trim($matches['content'])])) {
return $dataItem[trim($matches['content'])];
}
else {
return '';
}
}, $template);
任何关于我如何解决这个问题的建议。我需要在回调函数中使用$dataItem,并将其传递给preg_replace_callback
。我的开发环境是代码点火器。
匿名函数只能在PHP 5.3及更高版本中使用。您可以使用create_function()
代替:
$regExPattern = '/'<%(?<content>.*?)%'>/';
$template = preg_replace_callback($regExPattern, create_function(
'$matches'
, 'if(isset($dataItem[trim($matches[''content''])])) {
return $dataItem[trim($matches[''content''])];
}
else {
return "";
}'
)
);
当然是未经测试的。