Функция закрытия Php в качестве параметра для preg_replace_callback приводит к внутренней ошибке сервера 500
-
12-11-2019 - |
Вопрос
У меня есть 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 "";
}'
)
);
Непроверенный, конечно.
Не связан с StackOverflow