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

$page = str_replace("{menu}", include("menu.php"), $page);

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);
Dat heeft met de return value van [php]include[/php] te maken, bekijk de manual maar.

De oplossing kan verschillen zijn, als er geen php het bestand staat, kan je [php]file_get_contents[/php]() gebruiken, anders zou je met ouput buffering kunnen werken.

<?php
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.
Ok, met ob_start(); werkt het wel. Dank jullie.

Reageren