![]() |
![]() |
![]()
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?? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 691 Pomógł: 0 Dołączył: 6.08.2003 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Pytanie: jak zmodyfikować wyrażenia, bądź sam szablon, aby zostały znaki końca linii??
Nie wiem czy to będzie miało jakieś znaczenie ale w windowsie koniec linii oznaczony jest dwoma znakami rn i gdy zamieniasz: [php:1:d33a61a520]<?php $atpl = str_replace("n", "", $atpl); ?>[/php:1:d33a61a520] nadal pozostaje tam znak na końcu r. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 03:24 |