Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Parser szablonów
seba_bwo
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 3
Dołączył: 7.03.2009

Ostrzeżenie: (0%)
-----


Proszę o ocenę oraz o to jak mogę ulepszyć moje "dziecko", komentarze powinny wystarczyć.
  1. <?php
  2. #sprawdzane warunków:
  3. # {if zalogowany}Lol{/if} => if($zalogowany){return "Lol";}
  4. preg_match_all("@{if (!|)(.*)}(.*){/if}@Usi",$strona,  $out);
  5. foreach($out[2] as $in=>$val)
  6. {
  7.     if($out[1][$in]=='!')
  8.     {
  9.         #zamiana spełnionej negacji na wartość pola
  10.         if(!$val){$strona=str_replace($out[0][$in], $out[3][$in], $strona);}
  11.     }
  12.     else
  13.     {
  14.         #zamiana warunku na wartość pola
  15.         if($val){$strona=str_replace($out[0][$in], $out[3][$in], $strona);}
  16.     }
  17. }
  18.  
  19. #usuwanie warunków nie spełnionych
  20. $strona=preg_replace('@{if (!|)(.*)}(.*){/if}@Usi', '', $strona);
  21.  
  22.  
  23. # zamiana {var zmienna} na $zmienna
  24. preg_match_all("@{var (.*)}@Usi",$strona,  $out);
  25. foreach($out[0] as $in=>$val)
  26. {
  27.     $name=$out[1][$in];
  28.     $strona=str_replace($val,$name, $strona);
  29. }
  30. #
  31.  
  32. # wstawienie pętli dla tablicy XYZ w miejscuy {loop XYZ} >tu akcja< {/loop}
  33. # {1} w html odpowiada elementowi $XYZ[1]
  34. # indexy puki co tylko numeryczne
  35. preg_match_all("@{loop (.*)}(.*){/loop}@Usi",$strona,  $out);
  36. foreach($out[1] as $in=>$val)
  37. {
  38.     #tymczasowa zmienna
  39.     $redesign="af_$val";
  40.    
  41.     #tablica z mozliwosciami podmiany (nie udawało mi się bez tej tablicy :( )
  42.     $a=array('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}');
  43.         foreach($val as $value)
  44.         {
  45.             #zamiana elementów z tablicy $a na elementy z zapętlanej tablicy
  46.             $redesign.=str_replace($a, $value, $out[2][$in]);    
  47.         }
  48.        
  49.     #zamiana pętli html na wygenerowany kod
  50.     $strona= str_replace($out[0][$in], $redesign, $strona);
  51. }
  52. ?>


Ten post edytował seba_bwo 4.04.2009, 10:04:39
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Cypherq
post
Post #2





Grupa: Zarejestrowani
Postów: 181
Pomógł: 9
Dołączył: 28.08.2006
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Czy napisałem za mało? Gdybyś wpadł na stronę Zyx'a i poczytał co pisze o szablonach, wiedziałbyś:

- co chcesz tak naprawdę zrobić
- co robisz źle
- co robisz dobrze
- jak to co robisz powinno w przybliżeniu wyglądać.


--------------------
"Zero 'errorów' nic nie oznacza. Walidator sprawdza tylko składnię. Kod strony jest jak psu z d**y wyjęty i to, że walidator świeci się na zielono nie oznacza, że ta kupa jest ładna" - mike
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 11:31