Função de fechamento PHP como parâmetro para resultados preg_replace_callback em erro interno do servidor 500

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

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.

Foi útil?

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
scroll top