X
ďťż

[PHP] Funkcje string lub wyrażenia regularne kompilator szablonów

       

Podstrony


telcocafe

Zacząłem implementować system szablonów do systemu wortalowego. Dość trudnym zadaniem jest napisanie kompilatora, który zamieni kod HTML z wstawkami do PHP. http://www.unit1.pl/pb-673 (zawiera błędy), przykład szablonu: http://www.unit1.pl/pb-674

Gdy jest więcej niż 1 pętla lub instrukcja IF, zaczynają się problemy, ponieważ po przetworzeniu pierwszego IF zmienia się pozycja początku lub końca drugiego. Podwójnej pętli nie testowałem. Wynik: http://www.unit1.pl/pb-675 (błąd pod koniec pliku). Wprawdzie kłopot można ominąć, kombinując z liczeniem pozycji... Może jednak da się uzyskać oczekiwany efekt łatwiej, a nawet wydajniej?

Można też analizować komentarze <!-- IF ... --> i <!-- ELSE --> osobno oraz bez rekurencji, a potem porównać ilość zamian - ale nie dla pętli, gdyż ingeruję jeszcze w zmienne znajdujące się w niej. Może jednak lepszym wyjściem są wyrażenia regularne? Jeśli tak, jak je poprawnie napisać, aby uzyskać odpowiedni efekt, a skrypt wynikowy nie rozsypał się w wyżej omówionym przypadku lub po dodaniu innych znaczników?
Użytkownik Ferrari edytował ten post 12 luty 2008, 00:22


A jak teraz wygląda kompilator? Masz pewnie literówkę w kodzie, bo w niewłaściwym miejscu umieściło ciąg znaków.
Możesz użyć funkcji preg_replace, mogła by być pewniejsza.

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.

    Drogi uzytkowniku!

    W trosce o komfort korzystania z naszego serwisu chcemy dostarczac Ci coraz lepsze uslugi. By moc to robic prosimy, abys wyrazil zgode na dopasowanie tresci marketingowych do Twoich zachowan w serwisie. Zgoda ta pozwoli nam czesciowo finansowac rozwoj swiadczonych uslug.

    Pamietaj, ze dbamy o Twoja prywatnosc. Nie zwiekszamy zakresu naszych uprawnien bez Twojej zgody. Zadbamy rowniez o bezpieczenstwo Twoich danych. Wyrazona zgode mozesz cofnac w kazdej chwili.

     Tak, zgadzam sie na nadanie mi "cookie" i korzystanie z danych przez Administratora Serwisu i jego partnerow w celu dopasowania tresci do moich potrzeb. Przeczytalem(am) Polityke prywatnosci. Rozumiem ja i akceptuje.

     Tak, zgadzam sie na przetwarzanie moich danych osobowych przez Administratora Serwisu i jego partnerow w celu personalizowania wyswietlanych mi reklam i dostosowania do mnie prezentowanych tresci marketingowych. Przeczytalem(am) Polityke prywatnosci. Rozumiem ja i akceptuje.

    Wyrazenie powyzszych zgod jest dobrowolne i mozesz je w dowolnym momencie wycofac poprzez opcje: "Twoje zgody", dostepnej w prawym, dolnym rogu strony lub poprzez usuniecie "cookies" w swojej przegladarce dla powyzej strony, z tym, ze wycofanie zgody nie bedzie mialo wplywu na zgodnosc z prawem przetwarzania na podstawie zgody, przed jej wycofaniem.