yl197837 发表于 2017-4-4 09:41:02

一个php解析CMS标签函数

<?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) {
case "TagType": //类型
$TagType = $arrParamter;
break;
case "infoclass":
$InfoClass = $arrParamter;
break;
case "listcss":
$listcss = $arrParamter;
break;
case "pagesize";
$PageSize = $arrParamter;
break;
case "titlelen":
$TitleLen = $arrParamter;
break;
case "newwindow":
$NewWindow = $arrParamter;
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; //输入
?>
页: [1]
查看完整版本: 一个php解析CMS标签函数