Als Antwort auf eine andere Frage, die ich über reguläre Ausdrücke fragte, wurde mir gesagt, die preg_replace_callback
Funktion (PHP regex templating - find all occurrences of {{var}}) als eine Lösung für mein Problem zu verwenden. Das funktioniert gut, aber jetzt habe ich eine Frage bezüglich des Variablenumfangs in Callback-Funktionen.Variable Bereich für PHP-Callback-Funktionen
Die Funktion, die den Text analysiert, ist Teil einer Klasse, aber die Daten, die ich verwenden möchte, wird lokal in der Funktion gespeichert. Ich habe jedoch festgestellt, dass ich nicht auf diese Daten innerhalb meiner Callback-Funktion zugreifen kann. Hier sind die Möglichkeiten, die ich versucht habe, so weit:
- Implementieren Sie den Rückruf als eine private Klasse Funktion, vorbei
'$this->callback_function'
als Callback-Parameter (funktioniert nicht, PHP hat einen fatalen Fehler) - den Rückruf Implement innerhalb der Funktion, die es verwendet (siehe Beispiel unten), aber das hat nicht funktioniert entweder, weil
$newData
in ihrem Umfang nicht ist innerhalbcallback_function
Irgendwelche Ideen, wie ich in meiner $newData
Callback-Funktion zugreifen kann, vorzugsweise ohne Globals mit ?
Vielen Dank.
Beispiel unten für den zweiten Versuch (nicht richtig formatiert werden, wenn ich es nach dem Aufzählungspunkt setzen)
public function parseText($newData) {
...
function callback_function($matches) {
... //something that uses $newData here
}
...
preg_replace_callback('...', 'callback_function', $textToReplace);
}
Hey, danke, das ist genau das, wonach ich gesucht habe. –