2

我有一个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. 我的开发环境是代码点火器。

4

1 回答 1

1

匿名函数仅适用于 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 "";
      }'
    )
);

当然,未经测试。

于 2012-01-23T22:15:47.970 回答