login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Code "parsen" (Opgelost)

Offline Raze - 24/06/2009 23:24 (laatste wijziging 24/06/2009 23:39)
Avatar van RazePHP beginner Hallo,

ik ben een klein template systeempje aan het maken, layout wordt weergegeven en tags worden vervangen, alleen, wanneer ik een pagina include, en op die pagina staat php-code, dan wordt deze php-code in de bron afgedrukt, en dus niet gebruikt.

De klasse:
  1. <?php
  2.  
  3. class layout {
  4.  
  5. public $dir = ''; // de dir waarin de template-bestanden staan
  6. public $layout; // de layoutpagina
  7. public $basic = 'tmp.html'; // de standaardlayout indien de opgegeven layoutpagina niet bestaat
  8.  
  9. function __construct($layout) {
  10. if(file_exists($this->dir.$layout)) {
  11. $this->layout = implode(file($layout));
  12. } else {
  13. $this->layout = implode(file($this->dir.$this->basic));
  14. }
  15. }
  16.  
  17. public function parseTags($pageVars) {
  18. if(sizeof($pageVars) > 0) {
  19. foreach($pageVars as $pageTag => $value) {
  20. $this->layout =eregi_replace('@{'.$pageTag.'}',$value,$this->layout);
  21. }
  22. }
  23. }
  24.  
  25. public function fillData($page) {
  26. if(file_exists($page)) {
  27. $this->layout .= implode('',file($page));
  28. } else {
  29. }
  30.  
  31. }
  32. public function output() {
  33. return $this->layout;
  34. }
  35. }
  36. ?>


Een willekeurige pagina:
  1. <?php
  2. include_once('tmp.klasse.php');
  3. $layout = new layout('tmp.html');
  4.  
  5. $layout->parseTags($pageVars = array(
  6. 'PageTitle' => 'DIT IS EEN TEST',
  7. 'PageContent' => $layout->fillData('testphp.php'),
  8. 'PageFooter' => $layout->fillData('footer.html'),
  9. ));
  10.  
  11.  
  12.  
  13. echo $layout->output();
  14. ?>

4 antwoorden

Gesponsorde links
Offline djb - 25/06/2009 10:04
Avatar van djb PHP beginner Kijk eens naar de functie "eval"
http://nl.php.net/eval

Met die code kan je een string uitvoeren als php code.
Misschien heb je er wat aan  
Offline Raze - 25/06/2009 12:21
Avatar van Raze PHP beginner mmmh waarschijnlijk wel, maar waar moet die eval geplaatst worden?
Offline Martijn - 25/06/2009 12:29
Avatar van Martijn Crew PHP ik denk echo vervangen door eval() in je 2e code
Offline Raze - 25/06/2009 13:41
Avatar van Raze PHP beginner opgelost!
ik heb gewoon die $layout->fillData vervangen door include_once, en dan werkt het wel.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.184s