Mam taką klasę do obsługi szablonów *.tpl które mieszczą się w /template
  1. <?php 
  2.  class Templates 
  3.  { 
  4.  
  5. var $unparsed = array (); 
  6.  
  7. var $parsed = array (); 
  8.  
  9. var $blocks = array(); 
  10.  
  11. var $last_loaded; 
  12.  
  13. function Dodaj($plik) 
  14. { 
  15.  if($plik == $last_loaded) 
  16.  { 
  17. $this->unparsed[] = end($this->unparsed); 
  18.  } 
  19.  elseif(file_exists(F_TPL.$plik.'.tpl')) 
  20.  { 
  21. $file = @fopen(F_TPL.$plik.'.tpl',r); 
  22. flock($file, 2); 
  23. $this -> unparsed[] = fread($file,filesize(F_TPL.$plik.'.tpl')); 
  24. flock($file, 3); 
  25. $this->last_loaded = $plik; 
  26.  } 
  27.  else 
  28. echo 'Plik ' .$plik. ' nie istnieje.'; 
  29. } #end function load() 
  30.  
  31. function Parse() 
  32. { 
  33.  $i=0; 
  34.  foreach ($this->unparsed as $template) 
  35.  { 
  36. $found = array(); 
  37. if(preg_match_all("#{(.+?)}#is", $template, $found)) 
  38. { 
  39.  foreach($found[1] as $block) 
  40.  { 
  41. $block_name = '{'.$block.'}'; 
  42. $block_values = $this -> blocks[$i][$block]; 
  43. $template = str_replace($block_name, $block_values, $template); 
  44.  } 
  45. } 
  46. $this -> parsed[] = $template; 
  47. $i++; 
  48.  } 
  49. } #end function parse() 
  50.  
  51. function Pokaz($which="all",$to=0) 
  52. { 
  53.  if($which >= 0 && $to >= 0 && $to <= count($this->parsed) && $which != 'all') 
  54.  { 
  55. if($which < $to) 
  56. { 
  57.  while($which <= $to) 
  58.  { 
  59. echo $this->parsed[$which]; 
  60. $which++; 
  61.  } 
  62. } 
  63. else 
  64. { 
  65.  while($which >= $to) 
  66.  { 
  67. echo $this->parsed[$which]; 
  68. $which--; 
  69.  } 
  70. } 
  71.  } 
  72.  elseif($which != 'all') 
  73.  { 
  74. echo $this->parsed[2]; 
  75.  } 
  76.  else 
  77.  { 
  78. foreach($this->parsed as $parsed) 
  79. { 
  80.  echo $parsed; 
  81. } 
  82.  } 
  83. } #end function show_result() 
  84.  } #end class Templates 
  85.  define('F_TPL','template/'); 
  86. ?>

a to jest mój plik index.php
  1. <?
  2. include('template/szablon.class');
  3. $tpl = new Szablon;
  4. $tpl->Dodaj('gora');
  5. $tpl->blocks[] = array('Tytul'=>'aaa');
  6. $tpl->Parse();
  7. $tpl->Pokaz();
  8. ?>

wszystko działa ładnie pieknie z jednym wyjątkiem: jak dodam kolejny blok np.
$tpl->blocks[] = array('Zawartosc'=>'aaa');
to już mi się on nie wyświetli, autor pisze że "bardzo ważne by po każdym wczytaniu dodać nową tablicę do tablicy $blocks" ale nie wiem gdzie i jak to wpisać sad.gif .

A oto artykuł autora parsera: http://www.strefaphp.net/artykul39.html
Może ktoś mi pomoże?