Função de fechamento PHP como parâmetro para resultados preg_replace_callback em erro interno do servidor 500
-
12-11-2019 - |
Pergunta
eu tenho um preg_replace_callback
que usa uma função de fechamento (anônimo) como segundo parâmetro e funciona perfeitamente bem no local, mas quando eu o implemento no ambiente ativo, resulta em erro => Erro interno do servidor 500.Quando eu removo o fecho, ele funciona.
$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);
Alguma sugestão de como posso resolver esse problema.Preciso usar $dataItem dentro da minha função de retorno de chamada e passá-lo para preg_replace_callback
.Meu ambiente de desenvolvimento é o code igniter.
Solução
Funções anônimas funcionam apenas no PHP 5.3 e superior.Você poderia usar create_function()
em vez de:
$regExPattern = '/\<%(?<content>.*?)%\>/';
$template = preg_replace_callback($regExPattern, create_function(
'$matches'
, 'if(isset($dataItem[trim($matches[\'content\'])])) {
return $dataItem[trim($matches[\'content\'])];
}
else {
return "";
}'
)
);
Não testado, é claro.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow