Sven Rautenberg: \\1 von preg_replace() an eigene Funktion übergeben

Beitrag lesen

Moin!

Was mir immer noch ein Rätsel bleibt ist, warum es mit der Funktion test() ohne Probleme geklappt hat, die hätte eigentlich auch /e benötigt, zumindest nach meinem Verständnis. Weiß jmd. warum es in diesem Fall ohne funktionierte?

Ist recht simpel: In deiner Version wird zuerst die Funktion aufgerufen (parse_file oder test), mit dem Parameterstring "\1" als Argument. Der Rückgabewert wird dann als Ersetzung in preg_replace genutzt. Und in dieser Ersetzung steckt dann \1 drin und wird durch den Dateinamen ersetzt.

Deine Funktion test gibt den String "\1" im Funktionsergebnis zurück.

Da aber deine parse_file-Funktion mit "\1" als Dateinamen nichts anfangen kann, und dann nur einen Leerstring zurückgibt, wird die Include-Anweisung dann eben durch einen Leerstring ersetzt, nicht durch den Dateinamen oder durch deren Inhalt.

- Sven Rautenberg

--
"Love your nation - respect the others."