extract egne html tags
Hejsa jeg er ved at updatere en template class jeg har lavet.Det gør at bruger kan skriver
<IF name="truetest">
TRUE truetest<br />
<else>
FALSE truetest<br />
</if NAME="truetest">
i en template fil.
og så ved at kalde funktionen
$ft->tif('body', "truetest", TRUE);
vil så så echo the Sande eller falske værdi udfra om man har skrevet TRUE eller FALSE.
Det virker ok nu, men der er 3 ting jeg gerne ville ændre.
1: f.eks. hvis man har skrevet <if name = "truetest" > så vil den ikke kunne finde den. Og så kunne jeg godt tænke mig at man ikke 2: behøvede at skrive name="truetest" i slut taget, og den skal stadig kunne finde ud af hvis der f.eks. var endnu en if inde i if'en
3: at man kan putte flerer augumenter ind i selve <if> tagget
Det er sådan her jeg gør det nu.
// Display content if true or false
function tif($template, $macro, $value)
{
//laver lige lidt syntax clean up
$this->files [$template] = str_ireplace("<if", "<if", $this->files [$template]);
$this->files [$template] = str_ireplace("</if", "</if", $this->files [$template]);
$this->files [$template] = str_ireplace("name=", "name=", $this->files [$template]);
$true_content = "";
$fale_content = "";
$content = "";
$tmp = explode("<if name=\"".$macro."\">", $this->files [$template]);
if(count($tmp)>0)
{
$content = explode("</if name=\"".$macro."\">", $tmp[1]);
// Creating an string with the text that we shale replace
$replacer = "<if name=\"".$macro."\">".$content[0]."</if name=\"".$macro."\">";
// now we got the content of the if, lets see if there are an else.
$spicer = explode("<else>", $content[0]);
if(count($spicer)>1)
{
if($value == TRUE)
{
// Replaces with the true content
$this->files [$template] = str_ireplace($replacer, $spicer[0], $this->files [$template]);
}
else
{
// Replacing with the false content
$this->files [$template] = str_ireplace($replacer, $spicer[1], $this->files [$template]);
}
}
else
{
if($value == TRUE)
{
// Replaces with the true content
$this->files [$template] = str_ireplace($replacer, $content[0], $this->files [$template]);
}
else
{
// We have no false output
$this->files [$template] = str_ireplace($replacer, "", $this->files [$template]);
}
}
}
return; // Returner erstattede source
}
Hvis i vil ser mere af classen og hvordan den virker.
Classen: http://androme.dk/eksperten/class.FastTemplates.v1.phps
Index.php: http://androme.dk/eksperten/index.phps
Design filen: http://androme.dk/eksperten/main.html
Har i en ide til hvordan jeg ville kunne gøre dette?
Tak på forhånd!
Kasper Søgaard
btw, andre ideer til andre forbedringer er meget velkommen
