免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1050 | 回复: 0
打印 上一主题 下一主题

自娱自乐--超简易模版类 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-01-10 22:04 |只看该作者 |倒序浏览
今晚闲着无聊,写了个简易的模板类:


Class EasyTpl{
var $html;
function EasyTpl ($file)
{
  $this->html = file_get_contents( $file );
}

//一般变量替换方法
function setVar ($var,$replace)
{
  $content = &$this->html;
  $content = str_replace( '{'.$var.'}',$replace,$content );
}

//用来处理一维数组,如Array ( [id] => 19 [name] => test [city] => 厦门 )
function setArray ($array_name,$replace)
{
  $content = &$this->html;
  foreach ( $replace as $key => $value )
  {
   $content = str_replace( '{'.$array_name.'.'.$key.'}',$value,$content );
  }
}

  /*用来处理多维数组(常见数据库查询结果)
Array ( [0] => Array ( [id] => 19 [name] => test [city] => 厦门 ) [1] => Array ( [id] => 20 [name] => ffffff [city] => 北京 ) )
*/
function setArrayM ($loop,$replace)
{
  $content = &$this->html;
  $start_position = strPos( $content,'{'.$loop.'}');
  $end_position = strPos($content,'{/'.$loop.'}') + strLen('{/'.$loop.'}');
  $string = subStr( $content,$start_position,$end_position-$start_position);//获取循环段
  $sub_string = subStr( $string,strLen( '{'.$loop.'}' ),strPos($string,'{/'.$loop.'}')-strLen( '{'.$loop.'}' )); //取出循环段中字符
  preg_match_all('#\{(.+?)\}#',$sub_string,$search);//获得要替换的数组变量
  foreach ( $replace as $key => $value )
  {
   $search_array = array();
   $replace_array = array();
   foreach ( $value as $name => $value2 )
   {
    if ( in_array( $name,$search[1] ) )
    {
     $search_array[] = '{'.$name.'}';
     $replace_array[] = $value2;
    }
   }
   $temp .= str_replace( $search_array,$replace_array,$sub_string );
  }
  $content = str_replace( $string,$temp,$content );
}
function display ()
{
  echo $this->html;
}
}
?>


示例:

html文件--test.htm
1  setVar方法测试:
你好:{user}
2  setArray方法测试:
{data1.id}{data1.name}{data1.city}
3  setArrayM方法测试:
{data2}
{id}{name}{city}
{/data2}


php文件:

$data1=array(
'id'=>19,
'name'=>'test',
'city'=>'厦门'
);
$data2=array(
array('id'=>19,'name'=>'test','city'=>'厦门'),
array('id'=>20,'name'=>'ffffff','city'=>'北京')
);
$view = new easyTpl('./test.htm');//调用模板类并指定html文件
$view->setVar('user',"放弃思考");//一般变量替换
$view->setArray('data1',$data1);//一维数组替换
$view->setArrayM('data2',$data2);//多维数组替换
$view->display();
?>



PS:该类未经严格测试,且效率未知,哈哈

源码及示例下载:

文件:
EasyTpl_v1.0.0.rar
大小:
1KB
下载:
下载


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/12569/showart_66854.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP