模板类问题

模板类问题

我是一个PHP的菜鸟,在网上找了个模板类,感觉很简单,很方便
可是在处理二维方面的数据时,就不行了(可能是我学艺不仔细*^_^*)

比如:我用用这个类输出像地区信息那样的数据
现在要输出省份和城市
1,输出省份
2,按照省份输出城市

数据

四川:成都 南充 绵阳

广东:广州 深圳

...

要输出的效果是:

四川

       成都
       南充
       绵阳

广东
       广州
       深圳


以下是那个类的代码,我在附件里也放一份

[复制到剪切板]
CODE:
<?php
//defined('IN_SYS') or exit('Access Denied');
/**
 * NOTE:
 * 模板类,不支持缓存
 *只是用于程序与美工分离,不能输出动态页面,生成HTML文件
 * bug 不能使用多维数据,解析
 */

 
class template
 
{
  var 
$filename//模板文件
  
var $content//返回内容
  //初始化模板文件,将所有内容读入
  
function template($tplfilename)
  {
   
$this->filename=$tplfilename;
   if(!
file_exists($this->filename))exit('模板文件没找到');
   
$T=$fd fopen$this->filename"r" );
   if(!
$T){exit('不能打开模板文件');}
   
$this->content fread($fdfilesize($this->filename));
   
fclose$fd );
   include_once(
'inter.tag.php');//载入内部标签
  
}
 
  
//替换标志位内容
  
function Tag($key,$value)
  {
   
$this->content=str_replace("{\$".$key."}",$value,$this->content);
  }
  
//替换标志块内容
  
function BlockTag($block_name,$values)
  { 
   
//获得替换块的子模板
   
if(is_array($values))
   { 
    
ereg("{".$block_name."}.*{/".$block_name."}",$this->content,$regs);
    
$str_block=substr($regs[0],2+strlen($block_name),-(strlen($block_name)+3));
    
    
$str_replace="";
    
$block_replace="";
    foreach(
$values as $subarr)
    {
     
$str_replace=$str_block;
     while ( list( 
$key$val ) = each$subarr ) )
     {
      
$str_replace=str_replace("{\$".$key."}",$val,$str_replace);
     }
     
$block_replace.=$str_replace;
    }
    
$this->content=ereg_replace ("{".$block_name."}.*{/".$block_name."}",$block_replace,$this->content);
   }
   else
    
$this->content=ereg_replace ("{".$block_name."}.*{/".$block_name."}","none",$this->content);
  }
  
//输出模板内容
  
function Show()
  {
   echo 
$this->content;
  }
 }
 
$d=new template('test.html');
 
$d->Tag('h1','标一');
 
$d->Show();
?> ;


template.class.rar (973 Bytes)

要沉下去了,高手们啊,救急啊,