以小弟我之代码示例驳斥此等评语,看看什么叫模板引擎。
时间:2021-07-01 10:21:17
帮助过:3人阅读
以我之代码示例驳斥此等评语,看看什么叫模板引擎。。
【既然知道评价中肯,就应该明白差距在哪里了吧,每次运行都进行替换,相当程度上降低了系统性能,这样的模板引擎还有什么优势??】
【的确是有差距的,我看了一下,按照你说的一年多了,你已经累计有5次下载,和1毛钱的运营盈利。跟他这个只是会发个帖子,贴些代码,又没人下载,又没盈利的情况,差距实在太大了。】
PHP code
assign("csdn","csdner,大家中午好")
->assign("head",array("来自","xxx"))
->assign("greet",array("PHP技术
","基础编程","开放资源","framework"))
->assign("foot",array(
array("id"=>'1',"foot"=>"这是底部测试1"),
array("id"=>'2',"foot"=>"这是底部测试2"),
array("id"=>'3',"foot"=>"这是底部测试3")
))
->assign("bye","88,good bye");
$this->display("index.html");
}
}
?>
HTML code
welcome YouYaX
{csdn} |
{head} ―――― 发表在【{greet->1}】 |
{greet} |
{foot.foot}
{bye}
比较测试 , 让我们在html中使用PHP吧 , 模板变量上要写上双引号
看吧 , 果然正确吧, 测试结束,测试者:{head->1}";
}else{
echo "错了";
}
?>
------解决方案--------------------你晒的不是模板引擎啊
------解决方案--------------------那么你的模板引擎做了什么呢
PHP code
//――普通替换
//单个
输出数组值
// var_dump($this->array_array);exit;
$return=preg_match_all('/\{[^{]*->[^{}]*}/',$txt,$single);
if($return){
foreach($single[0] as $v){
$x=strlen($v);
$y=$x-2;
$z=substr($v,1,$y); //title->0
$z1 = preg_split('/->/', $z, -1, PREG_SPLIT_NO_EMPTY);
$txt=str_replace($v,$this->array_array[$z1[0]][$z1[1]],$txt);
}
}
//数组替换
$return=preg_match_all("/<\s*loop\s*>\s*(.+?)\s*<\s*\/loop\s*>/s",$txt,$match);
if($return){
try{
foreach($match[1] as $lv){
if(eregi("<\s*loop\s*>",$lv)){
throw new Exception(htmlspecialchars("标签不能嵌套!"),"304");
break;
}
}
}catch(Exception $e){
$this->exception($e);
}
$result0=$match[0]; //{array} |
系列数组 {array2}
$result1=$match[1]; //{array} |
系列数组{array2}
//var_dump($result1);exit;
foreach($result1 as $r1){
preg_match_all("/\{(.*)\}/",$r1,$match2);
$result2=$match2[0][0];//{array}
$result3=$match2[1][0];//array
$result4=$this->array_array[$result3];//得到的数组
try{
if(!is_array($result4))
throw new Exception(htmlspecialchars("标签解析出错,仅支持一维数组!"),"306");
/*
if(empty($result4))
throw new Exception(htmlspecialchars("解析一维数组值为空!"),"308");
*/
}catch(Exception $e){
$this->exception($e);
}
$result5='';
// unset($result5); //result5 清零
foreach($result4 as $v){
$result5.=str_replace("{".$result3."}",$v,$r1);
}
foreach($result0 as $r0){
if(ereg($result2,$r0))
$txt=str_replace($r0,$result5,$txt);
}
}
}
//--数组替换
//include替换
$return=preg_match_all("/<\s*include\s+file=\"(.*)\"\s*>/",$txt,$inc);
if($return){
$inc1=$inc[0];//系列数组
$inc2=$inc[1];//top.html 系列数组
foreach($inc2 as $v){
if(file_exists($v)){
$sub=file_get_contents($v);
foreach($inc1 as $v1){
//区分大小写匹配
if(ereg($v,$v1)){
$txt=str_replace($v1,$sub,$txt);
}
}
}else{
exit("include标签解析出错!");
}
}
}