![]() |
![]() |
![]()
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. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Przyjaciele php.pl Postów: 660 Pomógł: 0 Dołączył: 28.08.2002 Skąd: Starachowice Ostrzeżenie: (0%) ![]() ![]() |
Tak, wiem, ale ja właśnie chcę się pozbyć tej linii:
[php:1:7d62e22983]<?php $atpl = str_replace("n", "", $atpl); ?>[/php:1:7d62e22983] btw. jak dałem: [php:1:7d62e22983]<?php $atpl = str_replace("rn", "", $atpl); ?>[/php:1:7d62e22983] to preg_match zwracał False. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 680 Pomógł: 0 Dołączył: 1.10.2002 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
[php:1:60c0f301c2]<?php
$atp1 = ereg_replace("t|r|n|rn", "", $atp1); ?>[/php:1:60c0f301c2] -------------------- "Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Przyjaciele php.pl Postów: 660 Pomógł: 0 Dołączył: 28.08.2002 Skąd: Starachowice Ostrzeżenie: (0%) ![]() ![]() |
ERROR: Can't open template: mainview
Ehh, ale ja nie chcę pozbywać się znaków końca linii!! Tylko żeby pregi z nimi działały |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 680 Pomógł: 0 Dołączył: 1.10.2002 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Ehm, BzikOS cos kręcisz raz chcesz usuwać raz nie chcesz...
Hmm, spróbuj tak: [php:1:bbd62d63a1]<?php if(preg_match("/<!-- BEGIN $template -->(.*?)<!-- END $template -->/s", $atpl)) { // ... } else { // ... } ?>[/php:1:bbd62d63a1] -------------------- "Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Przyjaciele php.pl Postów: 660 Pomógł: 0 Dołączył: 28.08.2002 Skąd: Starachowice Ostrzeżenie: (0%) ![]() ![]() |
Oooo to mi chodziło KaMeLeOn
![]() Poradziłem sobie właśnie przed chwilą z tym problemem, ale zaproponowany przez Ciebie sposób jest lepszy. Dzięki! |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 12:01 |