Source: easytemplate-1.1.phps - download
<?php
/*
 @ Project: EasyTemplate 1.1 
 @ Link http://daif.net/easy/
 @ Author Daifallh Al Otaibi <daif55@gmail.com>
*/
    class EasyTemplate{
        var $files    = array();
        var $vars;
        var $fid;
        var $temp_path="./";// your template path OR "template"
        var $cash_path="easycach";// must be writeable check permission OR $_ENV["TEMP"];
        var $color = array();
        var $page;
        //patterns Array
        var $pats = array(
        //Foreach Variables
        "/{{([A-Z0-9_]{1,})}}/i",
        //Variables
        "/{([A-Z0-9_]{1,})}/i",
        //Foreach Statement
        "/<LOOP NAME=(\"|)+([a-z0-9_]{1,})+(\"|)>/i",
        "/<\/LOOP>/i",
        //IF & Else Statement
        "/<IF NAME=\"([A-Z0-9_]{1,})=(.+)\">/i",
        "/<IF NAME=(\"|)+([a-z0-9_]{1,})+(\"|)>/i",
        "/<ELSE>/i",
        "/<\/IF>/i",
        //Include Statement
        "/<INCLUDE NAME=\"(.+)\">/iU",
        //Switch Color
        "/(#[0-9A-Z]{6})\|(#[0-9A-Z]{6})/iU"
        );
        //Replacements Array
        var $reps = array(
        "<?= \$var[\\1]?>",
        "<?= \$this->vars[\"\\1\"]?>",
        "<? foreach(\$this->vars[\"\\2\"] as \$key=>\$var){ ?>",
        "<? } ?>",
        "<? if(\$this->vars[\"\\1\"]==\"\\2\"){ ?>",
        "<? if(\$this->vars[\"\\2\"]){ ?>",
        "<?} else {?>",
        "<? } ?>",
        "<?= EasyTemplate::display(\"\\1\"); ?>",
        "<?= (\$this->sw(\"\\1\\2\")) ? \"\\1\":\"\\2\";?>"
        );

    //Function to load a template file.
        function load_file($template){
            if(!file_exists($this->temp_path)) exit("<b>ERROR:</b> Template Folder $this->temp_path Not Exists");
            if(!file_exists($template)) exit("<b>ERROR:</b> Template File $template Not Exists");
            $this->files[$this->fid] = file_get_contents($template);
        }
    //Function to Switch Color.
        function sw($index){
            return $this->color["$index"] = ($this->color["$index"]) ? false:true;
        }
    //Function to parse the Template Tags
        function parse(){
            $this->files[$this->fid] = preg_replace($this->pats,$this->reps,$this->files[$this->fid]);
        }
    //Function to OUTPUT
        function display($template) {
            $this->vars = &$GLOBALS;
            $this->fid = $template.".php";
            if($this->temp_path) $template = $this->temp_path."/".$template;
            $tmd = @filemtime($template);
            if(!is_writeable($this->cash_path))
            $this->cash_path = $_ENV["TEMP"];
            $id =$this->cash_path."/".$tmd;
            if(!file_exists($id.$this->fid)){
                $this->load_file($template);
                $this->parse();
                $fp = fopen($id.$this->fid,"w");
                fwrite($fp,$this->files[$this->fid]);
                fclose($fp);
            }
            ob_start();
            include($id.$this->fid);
            $this->page = ob_get_contents();
            ob_end_clean();
            return $this->page;
        }
    }
?>