Функция закрытия php в качестве параметра preg_replace_callback приводит к внутренней ошибке сервера 500 - PullRequest
2 голосов
/ 24 января 2012

У меня есть preg_replace_callback, который принимает функцию закрытия (анонимную) в качестве 2-го параметра, и она отлично работает на локальном компьютере, но при развертывании его в реальной среде это приводит к ошибке => Внутренняя ошибка сервера 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.Моя среда разработки - средство для воспламенения кода.

1 Ответ

1 голос
/ 24 января 2012

Анонимные функции работают только в 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 "";
      }'
    )
);

Не проверено, конечно.

...