napisałem wstępną werjse funkcji do obsługi prostych szablonów obsługująca warunki
mam nadzieje na ostrą krytyke
funkcja :
<?
function tpl_parse(&$tpl_table, &$var_array)
{
$parseLevel = 0;
$parseArray[$parseLevel] = true;
while (list
($line, $content) = each ($tpl_table)) {
$offset = 0; $new_line = \"\";
while(true)
{
$open_tag_pos = strpos($content, \"{\", $offset); if ($open_tag_pos === false)
{
break;
}
$close_tag_pos = strpos($content, \"}\", $open_tag_pos); if ($close_tag_pos === false)
{
break;
}
$temp_content = substr($content,0
,$close_tag_pos); $open_tag_pos = strrpos($temp_content,\"{\",$offset); $var = substr($content,$open_tag_pos+1
,$close_tag_pos - $open_tag_pos-1
); if ($parseArray[$parseLevel]) { $new_line.= substr($content, $offset,$open_tag_pos-$offset); } $function_pos = strpos($var,\"(\"); if ($function_pos<>0)
{
$function = substr($var,0
,$function_pos); if ($function==\"if\")
{
$var = substr($var,$function_pos+1
,-1
); $true = $parseArray[$parseLevel] && $var_array[$var];
$parseLevel++;
$parseArray[$parseLevel] = $true;
} else
if ($function==\"fi\")
{
$parseLevel--;
}
} else
if (isset($var_array[$var])) {
if ($parseArray[$parseLevel]) { $new_line .= $var_array[$var]; }
} else
{
if ($parseArray[$parseLevel]) { $new_line .= \"{\".$var.\"}\"; }
}
$offset = $close_tag_pos + 1;
}
if ($parseArray[$parseLevel]) { $new_line.=substr($content, $offset); } $out .= $new_line;
}
return $out;
}
?>
plik wykorzystujacy funkcje:
<?
// Biblioteka : Kameleon
include(\"dna_kameleon.php\");
// Wczytanie szablonu TPL
$TPL = file(\"plik.tpl\");
// Definicja zmiennych dla szablonu
$vars = Array (\"varA\" => \"zmiennaA\", \"varB\" => \"A\", \"varC\" => true, \"varD\" => false);
// Parser
echo tpl_parse
($TPL, $vars);
?>
plik.tpl:
Kod
{varA}
{var{varB}}
{if(varC)} C = True {fi()}
{if(varD)} D = True {fi()}
{if(varD)}
{if(varC)} C i D = True {fi()}
{fi()}
Ten post edytował Bastion 18.02.2005, 21:58:31