Template + PHP include?
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.
De bedoeling is:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<!doctype html ...>
<html>
<head>
...
</head>
<body>
...
<?
echo "Dit is inhoud uit het PHP-bestand";
?>
</body>
</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.
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:
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.
Gewijzigd op 05/09/2012 19:50:39 door Erwin Augustijn
http://www.phphulp.nl/php/script/overig/template-parser/770/
Maar Smarty zal natuurlijk stukken beter zijn.
Dit heb ik een aantal jaren geleden ooit eens gemaakt: Maar Smarty zal natuurlijk stukken beter zijn.
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?
Nu heb ik alleen een HTML-template tot mijn beschikking (i.c.m. de "templateparser" van school, zie eerste post):
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.
Gewijzigd op 05/09/2012 19:46:06 door Erwin Augustijn