Функция закрытия Php в качестве параметра для preg_replace_callback приводит к внутренней ошибке сервера 500

StackOverflow https://stackoverflow.com/questions/8978476

Вопрос

У меня есть 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.Моя среда разработки - code igniter.

Это было полезно?

Решение

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top