Oto kod

dodawanie taga i danych do podmiany
  1. <?php
  2. function add_loop($text,$code)
  3. {
  4. $this->tag_loop[$text] = $code;
  5. }
  6. ?>


i wywolanie np.
  1. <?php
  2. add("tag",dane[])
  3. ?>


Oraz funkcja parsujaca :

  1. <?php
  2. function build()
  3. {
  4. if (count($this->tag) != 0)
  5. {
  6. $handle = fopen($this->tpl,"r");
  7. $tpl = fread($handle,filesize($this->tpl));
  8.  
  9. foreach ($this->tag_loop as $text_loop => $code_loop) 
  10. {
  11. if (is_array($code_loop))
  12.  {
  13.  if (preg_match("/{loop:".$text_loop."}(.*?){endloop:".$text_loop."}/is", $tpl, $loop))
  14.  {
  15.  
  16.  $temp_string = '';
  17.  
  18.  for ($i = 0; $i < count($code_loop); $i++)
  19.  {
  20.  $k = '';
  21.  $v = '';
  22.  $counter = 0;
  23.  
  24.  foreach($code1 as $key => $val)
  25.  {
  26.  $k[$counter] = "/{".$key."}/";
  27.  $v[$counter] = $val;
  28.  $counter++;
  29.  }
  30.  
  31.  $temp_string .= preg_replace($k, $v, $loop[1]);
  32.  }
  33.  
  34. $tpl = preg_replace("/{loop:".$text_loop."}(.*?){endloop:".$text_loop."}/is", $temp_string, $tpl);
  35. }
  36. }
  37. }
  38. foreach ($this->tag as $text => $code) 
  39. {
  40. $tpl = str_replace('{'.$text.'}',$code,$tpl);
  41. }
  42. echo $tpl;
  43. }
  44. else
  45. die("Brak zdefiniowanych tagów");
  46. }
  47. ?>


Jednak gdy daje dane z mysql'a lub tablice to nie podmienia tagów na kod.

Edit : Nie sugerujcie się tymi foreach'ami dla $this->tag i tag_loop - w wersji aktualnej jest oczywiscie jeden foreach z $this->tag.