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."