Hi, ich mache einige Ersetzungen mittels der Funktion preg_replace_callback(). Die Callback-Funktion sucht aus einem assoziativen Array den richtigen Ersetzungstext und gibt ihn zurück. Nicht weiter tragisch, auch das mit dem OOP-Dingens (array(&$this...)) habe ich mittlerweile hinbekommen.
Allerdings behelfe ich mir im Moment mit zwei Klassenvariablen als Zwischenspeicher, um den richtigen Wert aus dem assoziativen Array zu bekommen.
Komprimiert sieht das so aus:
In der Form funktioniert das schon so: Mittels der Klassenvariablen wird die richtige Ersetzung gefunden und ausgeführt. Jetzt kommt das Problem:
Im nächsten Schritt möchte (muss) ich in die Funktion a() Rekursion implementieren - und da kracht es dann, weil die Klassenvariablen überschrieben werden. Lange Rede kurzer Sinn:
Gibt es eine Möglichkeit die zwei Variablen gleich der Callback-Funktion zu übergeben?
Habe dazu leider nirgends etwas finden können, aber die Hoffnung stirbt zuletzt... Dankeschön!
Allerdings behelfe ich mir im Moment mit zwei Klassenvariablen als Zwischenspeicher, um den richtigen Wert aus dem assoziativen Array zu bekommen.
Komprimiert sieht das so aus:
PHP-Code:
var $bla;
var $blubb;
function a()
{
foreach (...) {
$bla = $key;
for (...) {
$blubb = $i;
$ersetzt = preg_replace_callback('/{([A-Z_\-\.]*)}/s', array(&$this, 'cb'), $looptpl);
}
}
}
function cb($backrefs)
{
return $this->arr[$this->bla][$this->blubb][$backrefs[2];
}
Im nächsten Schritt möchte (muss) ich in die Funktion a() Rekursion implementieren - und da kracht es dann, weil die Klassenvariablen überschrieben werden. Lange Rede kurzer Sinn:
Gibt es eine Möglichkeit die zwei Variablen gleich der Callback-Funktion zu übergeben?
Habe dazu leider nirgends etwas finden können, aber die Hoffnung stirbt zuletzt... Dankeschön!
Kommentar