设为首页 收藏本站
查看: 791|回复: 0

[经验分享] 一个php解析CMS标签函数

[复制链接]

尚未签到

发表于 2017-4-4 09:41:02 | 显示全部楼层 |阅读模式
<?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; //输入
?>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-359917-1-1.html 上篇帖子: php(语法)魔法函数与变量 下篇帖子: php fopen函数-文件系统函数库
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表