<?php
/**
author:zhangzhiyu
email:zhang.z.y@163.com
msn:zhang.z.y@163.com
**/
$TemplateCode = "<div><tag_ZyTag?TagType=1&InfoClass=001005007><tag_ZyTag?TagType=2&InfoClass=001005007></div>";
$HtmlCode = "";
$doMake = "";
$RightTag = "";
$TemplateLen = strlen(trim($TemplateCode));
$TagName = "";
$FindEnd = false;
$isEndTemplate = false;
$SearchTag = "<tag_";// '标记的起始
$SearchTagE = ">";// '标记的结束
$StartPos = 0;// '在循环中记录当前已经处理到的位置
$MyPos = 0;
$MyPosE = 0;
While (!$FindEnd && $TemplateLen > 0) {
//找到下一个标记的起始位置
$MyPos = strpos($TemplateCode,$SearchTag,$StartPos);
if ($MyPos == 0) {
$FindEnd = true;
//将剩余的代码追加保存到HtmlCode
$HtmlCode = $HtmlCode . substr($TemplateCode, $StartPos);
}else{
//如果找到了标记起点
//先将介于这个标记起点和上一个标记终点之间的代码保存到HtmlCode
$HtmlCode = $HtmlCode . substr($TemplateCode, $StartPos, $MyPos - $StartPos);
//从这个位置开始找这个标记结束的位置
$MyPosE = strpos($TemplateCode,$SearchTagE,$MyPos);
//取出标记以及标记携带的参数
$TagName = substr($TemplateCode, $MyPos + 5, $MyPosE - $MyPos - 5);
if($TagName == "" ){
//WtLog ("模板中发现问题:发现空标记!")
}
//从标记中提取出参数部分,即?以后的部分(不包括?)
$TagName = substr($TagName, strpos($TagName, "?",1) + 1);
$arrTagName = explode("&",$TagName);
//变量重置
$TagType = ""; //信息类型
$InfoClass = ""; //信息分类
$ListCss = ""; //应用css
$PageSize = ""; //信息条数
$TitleLen = ""; //标题长
$NewWindow = ""; //是否新窗口打开
for ($i=0;$i<count($arrTagName);$i++) {
$TempTagName = $arrTagName[$i];
//根据=再次进行分割
$arrParamter = explode("=",$TempTagName);
switch ($arrParamter[0]) {
case "TagType": //类型
$TagType = $arrParamter[1];
break;
case "infoclass":
$InfoClass = $arrParamter[1];
break;
case "listcss":
$listcss = $arrParamter[1];
break;
case "pagesize";
$PageSize = $arrParamter[1];
break;
case "titlelen":
$TitleLen = $arrParamter[1];
break;
case "newwindow":
$NewWindow = $arrParamter[1];
break;
}
}
//根据不同的模块类型生成不
switch ($TagType) {
case 1:
$HtmlCode = $HtmlCode . "<li>你好,你好</li>";
break;
case 2:
$HtmlCode = $HtmlCode . "<li>行文,新闻 2007-11-5</li>";
break;
}
$StartPos = $MyPosE + 1;
}
}
echo $TemplateCode = $TemplateCode . $HtmlCode; //输入
?>