template parser - files includen
Ik heb zojuist een template parser die ik van op deze site heb overgenomen geïnstalleerd voor mijn website. Nu als ik bv {content} wil vervangen door een string, dan gaat dit perfect. {menu} echter wil ik vervangen hebben door een andere PHP-file. Dus ik gebruikte
Maar als ik dit doe dan krijg ik op mijn index.php op de plaats waar ik menu.php wil includen gewoon '1' te zien.
Maar als ik dit doe dan krijg ik op mijn index.php op de plaats waar ik menu.php wil includen gewoon '1' te zien.
Dat klopt. Het resultaat van include ("menu.php") zal een 1 opleveren als het gelukt is. Beter zo:
$page = str_replace("{menu}", 'include("menu.php")', $page);
$page = str_replace("{menu}", 'include("menu.php")', $page);
Dat heeft met de return value van include te maken, bekijk de manual maar.
De oplossing kan verschillen zijn, als er geen php het bestand staat, kan je file_get_contents() gebruiken, anders zou je met ouput buffering kunnen werken.
De oplossing kan verschillen zijn, als er geen php het bestand staat, kan je file_get_contents() gebruiken, anders zou je met ouput buffering kunnen werken.
Code (php)
1
2
3
4
5
2
3
4
5
<?php
ob_start();
include 'menu.php';
$page = str_replace("{menu}", ob_get_clean(), $page);
?>
ob_start();
include 'menu.php';
$page = str_replace("{menu}", ob_get_clean(), $page);
?>
Als ik dat doe laat hij op de plaats waar menu.php geïncluded zou moeten zijn gewoon de zin include("menu.php"); zien.