Beste allemaal,

Ik ben voor een studieopdracht bezig met het maken van een eenvoudig templatesysteem.
Hierbij wordt een HTML-bestand ingelezen door PHP en via preg_replace_callback worden de ###tags### en ***tags*** gefilterd en omgezet in een andere waarde, waarbij de ###tags### een gewone tekst bevatten, maar ***tags*** een module in moeten inladen.

Nu loop ik tegen het probleem aan dat wanneer ik via een preg_replace_callback een PHP-pagina probeer te includen, de inhoud bovenaan de pagina komt te staan, zoals in het voorbeeld hieronder.

<?
echo "Dit is inhoud uit het PHP-bestand";
?>
<!doctype html ...>
<html>
...
</html>


De bedoeling is:

<!doctype html ...>
<html>
<head>
...
</head>
<body>
...
<?
echo "Dit is inhoud uit het PHP-bestand";
?>
</body>
</html>


Ik heb al geprobeerd om via een virtual include een PHP-pagina in te voegen, maar ook dit doet hij niet.

<!--#include virtual="modules/nieuws.php"-->


Weet iemand hoe ik toch ervoor kan zorgen dat ik de PHP-inhoud op de plaats van ***tags*** kan laten verschijnen in de template?

PHP-code: http://plaatscode.be/141892/
Template-code: http://plaatscode.be/141893/
Wachtwoord: phphulp

In bovenstaande code stond de volgende code voordat ik het met file_get_contents uitprobeerde:

if($res['type']==3){
return include($res['replace']);
}

Met file_get_contents werd de code als "platte" tekst weergeven, maar de bedoeling is dat de include op de plaats van de tag als PHP-code wordt uitgevoerd.
Erwin Augustijn op 05/09/2012 14:57:52

... In bovenstaande code stond de volgende code voordat ik het met file_get_contents uitprobeerde ...


Heb je sindsdien vooruitgang geboekt, met file_get_contents ?

Nee, dan weergeeft hij de PHP-code als "platte" tekst.
Wat wil je dan?
Normaal gesproken zou ik dit doen:

<div id="header">
<?php
include("header.php");
?>
</div>


Nu heb ik alleen een HTML-template tot mijn beschikking (i.c.m. de "templateparser" van school, zie eerste post):

<div id="header">
***HEADER***
</div>


De bedoeling is dat op de plaats van ***HEADER*** de code van "header.php" wordt uitgevoerd.

Nu is het zo dat wanneer ik ***HEADER*** via een preg_replace_callback vervang door include("header.php");, de paginainhoud bovenaan de pagina wordt weergeven - en dus niet op de plaats van ***HEADER***.
Ik ken de reden hiervan: eerst wordt de serverside code geparst en vervolgens pas de clientside code.
Ik zoek nu alleen nog een oplossing waardoor het wel mogelijk is om via PHP een werkende PHP-code in te voegen op de plaats van een templatetag.

Reageren