Fonction de fermeture PHP comme paramètre pour prég_replace_callback entraîne une erreur de serveur interne 500

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

Question

j'ai un preg_replace_callback qui prend une fonction de fermeture (anonyme) comme le 2ème paramètre et il fonctionne parfaitement bien sur local, mais lorsque je le déploie dans un environnement en direct, il se traduit par une erreur => Erreur du serveur interne 500. Lorsque je supprime la fermeture, cela fonctionne.

$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);

Toutes les suggestions comment puis-je travailler à l'arrouver de ce problème. J'ai besoin d'utiliser $ dataItem dans ma fonction de rappel et de le passer à preg_replace_callback. Mon environnement de développement est l'allumage du code.

Était-ce utile?

La solution

Les fonctions anonymes ne fonctionnent que dans PHP 5.3 et plus. Vous pourriez utiliser create_function() Au lieu:

$regExPattern = '/\<%(?<content>.*?)%\>/';
$template = preg_replace_callback($regExPattern, create_function(
      '$matches'
    , 'if(isset($dataItem[trim($matches[\'content\'])])) {
          return $dataItem[trim($matches[\'content\'])];
      }
      else {
          return "";
      }'
    )
);

Non testé, bien sûr.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top