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??