Skoro mnie krytykujesz w takim razie zoabcz to:
[php:1:01ca64839e]<?php
class template
{
var $file;
var $inc = array("default" => "");
var $blocks = array("default" => "");
var $moduls = array("default" => "");
function load($file){
$file = "templates/".$file.".tpl";
if(file_exists($file)){
$plik = fopen($file, 'r');
$unparsed = fread($plik, filesize($file));
fclose($plik);
}else{
die("brak pliku $file");
}
// wylapuje moduły
preg_match_all( "#[INCLUDE:(.+?)]#is", $unparsed, $include);
$unparsed = preg_replace("#[INCLUDE:(.+?)]#is","{INCLUDE:$1}", $unparsed);
$unparsed = str_replace("n", "|ent|", $unparsed);
preg_match_all( '/[MODUL.*](.+)[/MODUL.*]/Uise', $unparsed, $znalezione);
// zamienia moduły na ich odpowiedniki
$unparsed = preg_replace('/[MODUL:(.*?)](.*?)[/MODUL:(.*?)]/i','{MODUL:$1}', $unparsed);
$unparsed = str_replace("|ent|", "n", $unparsed);
$znalezione[0] = str_replace("|ent|", "n", $znalezione[0]);
$znalezione[1] = str_replace("|ent|", "n", $znalezione[1]);
$mod = array();
foreach ($znalezione[0] as $i_parser){
preg_match("/[MODUL:(.*?)]/i",$i_parser, $znal);
$pref = $znal[1];
$m = preg_replace('/[MODUL:(.*?)]/i','', $i_parser);
$m = preg_replace('/[/MODUL:(.*?)]/i','', $m);
$mod["$pref"]=$m;
}
foreach ($include[0] as $i_parser){
preg_match("/[INCLUDE:(.*?)]/i",$i_parser, $znal);
$in = preg_replace("#[INCLUDE:(.+?)]#is","$1", $i_parser);
$pref = $znal[1];
$prefix = $znal[1];
$pref = "templates/".$pref.".tpl";
if(file_exists($pref)){
$plik = fopen($pref, 'r');
$inc[$prefix] = fread($plik, filesize($pref));
fclose($plik);
}else{
die("brak pliku $file");
}
}
$this -> moduls = $znalezione[1];
$this -> mods = $mod;
$this -> unparsed = $unparsed;
$this -> inc = $inc;
return $this -> moduls;
return $this -> inc;
return $this -> mods;
return $this -> unparsed;
}
function parse($unparsed,$blocks = array()){
if(preg_match_all('#{(.+?)}#is', $unparsed, $found)){
$parsed = $unparsed;
foreach($found[1] as $block){
$parsed = str_replace('{'.$block.'}', $blocks[$block], $parsed);
}
}
return $parsed;
}
}
class modul
{
var $file;
var $mod;
var $blocks = array("default" => "");
var $moduls = array("default" => "");
function parse($unparsed,$blocks = array()){
if(preg_match_all('#{(.+?)}#is', $unparsed, $found)){
$parsed = $unparsed;
foreach($found[1] as $block){
$parsed = str_replace('{'.$block.'}', $blocks[$block], $parsed);
}
}
return $parsed;
}
}
?>[/php:1:01ca64839e]
szablon wygląda tak:
Kod
[INCLUDE:header]
<table align="center" width="60%" style="border:1px solid #000000">
<!--- [MODUL:z] gorna czesc-->
<tr>
<td class="forum1">{z:czas}</td>
<td class="forum1">{z:cos}</td>
<td class="forum2">{z:ile}
</td>
</tr>
<!--- [/MODUL:z] gorna czesc-->
<!--- [MODUL:ass] dolna czesc-->
<tr>
<td class="forum1">{ass:czas}</td>
<td class="forum1">{ass:cos}</td>
<td class="forum2">{ass:ile}
</td>
</tr>
<!--- [/MODUL:ass] dolna czesc-->
</table>
<br><br><br>
[INCLUDE:footer]
Nie uznaje siebie za eksperta w smartach bo nawet ich nie używałem.
Jedynie wziąłem sie za pisanie właśnego parsera.
przy okazji mam prozbe jeżeli ktoś potrzafi poprawić mój kod wyrażeniami regularnymi bo niestety z tym mam problem.
I słowa krytyki czy taki system jest dobry.