Frage

Ich habe eine preg_replace_callback dies nimmt eine closure (anonyme) Funktion als 2. Parameter an und funktioniert lokal einwandfrei, aber wenn ich sie in einer Live-Umgebung bereitstelle, führt dies zu einem Fehler => Interner Serverfehler 500.Wenn ich den Verschluss entferne, funktioniert es.

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

Irgendwelche Vorschläge, wie ich dieses Problem umgehen kann.Ich muss $ DataItem in meiner Rückruffunktion verwenden und an übergeben preg_replace_callback.Meine Entwicklungsumgebung ist Code Igniter.

War es hilfreich?

Lösung

Anonyme Funktionen funktionieren nur in PHP 5.3 und höher.Sie könnten verwenden create_function() stattdessen:

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

Natürlich ungetestet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top