PHP-Schließfunktion als Parameter für preg_replace_callback führt zu internem Serverfehler 500
-
12-11-2019 - |
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.
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