![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Przyjaciele php.pl Postów: 660 Pomógł: 0 Dołączył: 28.08.2002 Skąd: Starachowice Ostrzeżenie: (0%) ![]() ![]() |
Chodzi o prosty system szablonow.
Plik z szablonami wyglada tak: [xml:1:11f6c747ac] <!-- BEGIN szablonik1 --> Tu jakis tekst<br> i jeszcze tu <hr> Pieknie <!-- END szablonik1 --> <!-- BEGIN szablnik2 --> cos tam cos <!-- END szablonik2 --> [/xml:1:11f6c747ac] I kawalek kodu klasy, odpowiedzialny za wczytanie danego szablonu (wykastrowany nieco z nieistotnych rzeczy): [php:1:11f6c747ac]<?php $atpl = fread(fopen($tpl_file, 'r'), filesize($tpl_file)); $atpl = str_replace('', '', $atpl); $atpl = str_replace(''', ''', $atpl); $atpl = str_replace("n", "", $atpl); // <------------ if(preg_match("#<!-- BEGIN $template -->(.*?)<!-- END $template -->#", $atpl)) { $atpl = preg_replace('#<!-- BEGIN (.*?) -->(.*?)<!-- END (.*?) -->#', '$szablon['1'] = '2';', $atpl); $szablon = Array(); eval($atpl); Return $szablon[$template]; } else { $this->error("Can't open template: $template"); } ?>[/php:1:11f6c747ac] Działało to dobrze dopóki było na serverze postawionym na linuxie, niestety ostatnio musiałem przesiąść się na jakiegos krasnala i też działa, ale nie tak jak należy, ponieważ do przeglądarki wysyłany jest cały kod w jednej linii (zamiana znaku konca linii następuje w chwili wczytania szablonu, tylko nie wiem dlaczego na linuxie było dobrze, a pod win robi sie jak robi). Jeśli zostawię znaki końca linii, to wyskakuje błąd: Can't open templ... czyli nie pasuje do wzorca w preg_match (no i w preg_replace też nie). Pytanie: jak zmodyfikować wyrażenia, bądź sam szablon, aby zostały znaki końca linii?? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 12:54 |