Mam prosty system szablonów i nie jestem pewien co do wyrażeń regularnych w nim użytych, sam je pisałem i na razie działają bez zarzutu jednak wolałbym się upewnić:

Pierwsze wyrażenie służy do zamiany np.
  1. <h1>{$asdf$}</h1> jak i również {<h1>$asdf$</h1>}

na:
  1. <h1>jakas przykladowa wartos zmiennej</h1>

i ma postać:
  1. <?php
  2. preg_replace('#{([^{]*)($'.$zmienna.'$)([^}]*)}?#','1%%*%%'.$wartosc.'3',$szablon);
  3. ?>

dodane tutaj znaki %%*%% służą do tego że gdyby wartością zmiennej $asdf$ była liczba to wyrażenie interpretowało by to w ten sposób: '\\12\\3' (zakładając że tą liczbą była by 2) - da się to jakoś ominąć?

Następne wyrażenie służy do usuwania z szablonu nie zamienionych zmiennych, czyli np. {<h1>$asdf$</h1>}
i ma postać:
  1. <?php
  2. $szablon = preg_replace('#{.*$.+?$.*}#','',$szablon);
  3. ?>

Cała metoda wygląda w ten sposób:
  1. <?php
  2. private function zamien(){
  3. $szablon = $this->szablon;
  4. foreach($this->dane as $zmienna => $wartosc){
  5. $szablon = preg_replace('#{([^{]*)($'.$zmienna.'$)([^}]*)}?#','1%%*%%'.$wartosc.'3',$szablon);
  6. }
  7. $szablon = preg_replace('#{.*$.+?$.*}#','',$szablon);
  8. $szablon = str_replace('%%*%%','',$szablon);
  9. return $szablon;
  10. }
  11. ?>


Prosiłbym o sprawdzenie tych wyrażeń i ewentualną poprawę.