关系经济人类预测化学自然
中准网
自然科学
知识物理
化学生物
地理解释
预测理解
本质社会
人类现象
行为研究
经济政治
心理结构
关系指导
人文遗产

php手把手教你做网站(三十五)网站静态生成三实战标签的实现

4月8日 眸中星投稿
  前边介绍了,pregmatchall,pregmatch以及用到的标签,下面我们来以具体的实例来说明标签的解析。
  模板news。html包含了include标签(通用头部,底部);img01。bs178。combalucded5b4fa5cdd838。jpgfcname:getpicpath}获取banner图;2个cmlist,第一个获取所有新闻的分类,第2个显示文章列表(带分页)2个cmlist是否有分页以pagesize区别;显示日期使用了自定义方法(riqigeshi),显示日期格式;
  每一个标签解析的方式都是一样的,就是使用pregmatchall,代码比较多,大多是重复的,只贴出来一部分吧,参考下就可以按照自己的方式来写了。
  注意:生成详细页面的时候,有的时候会同时生成列表页,要限制一下总的页数,最多生成前边多少页,如果页数很多,直接循环生成,很大可能会出现卡死的情况{includeincludeheader}imgsrca2020imgdataimg。jpgdatasrcimg01。bs178。combalucded5b4fa5cdd838。jpgfcname:getpicpath}alt新闻中心bannerul{cmlistt:webcat,f:catname,id,cathtmlname,cathtmlpath,c:projectid87andparentid0,o:sortdesc,iddesc,l:,name:a}li{facatname}li{cmlist}ulspanclassbreads0位置:span首页新闻资讯ul{cmlistt:webnews,f:addtime,newsname,id,newsstatus,newspic,htmlname,htmlfolder,c:,o:sortdesc,iddesc,l:,name:a,pagesize:10}li{faaddtimefcname:riqigeshi,methstr:1}h2{fanewsname}h2{fanewsstatus}查看详细li{cmlist}ul!分页开始{page}!分页结束{includeincludefooter}
  创建htmlfunction()用于生成html页面模板名称htmlnamenews。添加或者编辑文章,保存以后的信息upaprDb::name();functionhtmlfunction(htmlname,upapr){1读取模板htmstrfilegetcontents(htmlname);2替换include标签htmstrincfunction(htmstr);3替换掉详情页的编号pregmatch(cs〔(。)〕i,htmstr,carr);carr〔0〕:cs〔id〕carr〔1〕:idif(carr){htmstrstrreplace(carr〔0〕,upapr〔carr〔1〕〕,htmstr);}4替换掉配置的路径信息replacstrhinkconfig::get(viewreplacestr);可以单个的替换htmstrstrreplace(PUJS,replacstr〔PUJS〕,htmstr);htmstrstrreplace(PUCSS,replacstr〔PUCSS〕,htmstr);htmstrstrreplace(PUIMG,replacstr〔PUIMG〕,htmstr);也可以循环数组,1次性全部替换foreach(replacstraskv){htmstrstrreplace(k,v,htmstr);}5替换cmf标签(自定义函数)htmstrcmffunction(htmstr);6替换cmonehtmstrcmonefunction(htmstr);7替换cmpagehtmstrcmpage(htmstr);8替换嵌套循环都用到cmlist标签,防止出错,嵌套循环放到前边替换htmstrloopcatfunction(htmstr);9替换模块内循环分页会涉及到分页的时候页码链接地址(存放的文件、文件名称),还有列表链接文章详情upaprarray();存放这些信息funcstrloopfunction(htmstr,upapr);htmstrfuncstr〔htmstr〕;upaprfuncstr〔upapr〕??}
  incfunction函数,替换include文件functionincfunction(htmstr){pregmatchall({include(。)}i,htmstr,includearr);cinfodb(config)field(sitetheme)find();cinfo〔sitetheme〕defaulti0;foreach(includearr〔1〕ask){读取模板信息kincludeheader截取出来的k带有空格需要trim(k)去掉ROOTPATHE:webincludearr〔0〕〔m〕{includeincludeheader}htmstrstrreplace(includearr〔0〕〔i〕,filegetcontents(Config(webtemplate。viewpath)。cinfo〔sitetheme〕。。trim(k)。。html),htmstr);i;}}
  cmffunction函数,替换自定义函数functioncmffunction(htmlstr){pregmatchall({cmf(。?)}is,htmlstr,arr);ii0;foreach(arr〔1〕asmeth){metharrexplode(,meth);fcnamejsondecode({。metharr〔1〕。})methstrjsondecode({。metharr〔1〕。})methstr??;htmlstrstrreplace(arr〔0〕〔ii〕,fcname(trim(metharr〔0〕),methstr),htmlstr);}}
  cmone函数,替换单页信息functioncmonefunction(htmlstr){pregmatchall({cmone(。?)}(。?){cmone}is,htmlstr,listone);m0;listone〔0〕原字符串listone〔1〕标签内的参数listone〔2〕替换的字符串foreach(listone〔1〕ask5){ttrim(jsondecode({。k5。})t);ftrim(jsondecode({。k5。})f);otrim(jsondecode({。k5。})o);ctrim(jsondecode({。k5。})c??);ltrim(jsondecode({。k5。})l??);nametrim(jsondecode({。k5。})name??);nameDb(t)field(f)where(c)order(o)limit(l)find();截取字段pregmatchall({f。name。(。?)}is,listone〔2〕〔m〕,farr);farr〔1〕字段存放的数组,字段带有空格要trim()删除pregstrlistone〔2〕〔m〕;finum0;foreach(farr〔1〕asfi){ffarrexplode(,fi);判断是否存在自定义函数if(count(ffarr)1){fcnamejsondecode({。ffarr〔1〕。})methstrjsondecode({。ffarr〔1〕。})methstr??;fiarexplode(,,ffarr〔0〕);可以是多个变量,合并成了字符串for(c0;ccount(fiar)1;c){fistr。name〔trim(fiar〔c〕)〕。,;}左侧参数fistr右侧常量参数methstrfistrmbsubstr(fistr,0,mbstrlen(fistr)1);pregstrstrreplace(farr〔0〕〔finum〕,fcname(fistr,methstr),pregstr);}else{pregstrstrreplace(farr〔0〕〔finum〕,name〔trim(farr〔1〕〔finum〕)〕,pregstr);}}htmlstrstrreplace(listone〔0〕〔m〕,pregstr,htmlstr);m;}}
  cmpage函数,替换单页信息
  整个模板应该只会出现一次,使用pregmatch即可。functioncmpage(htmstr){整个页面替换字段,执行完成以后要清除掉cmpage标签pregreplace({cmpage(。)},,htmstr);pregmatch({cmpage(。)},htmstr,pagearr);if(pagearr){ttrim(jsondecode({。pagearr〔1〕。})t);ftrim(jsondecode({。pagearr〔1〕。})f);otrim(jsondecode({。pagearr〔1〕。})o);ctrim(jsondecode({。pagearr〔1〕。})c??);ltrim(jsondecode({。pagearr〔1〕。})l??);nametrim(jsondecode({。pagearr〔1〕。})name??);namedb(t)field(f)where(c)order(o)limit(l)find();pregmatchall({f。name。(。?)}is,htmstr,fuearr);finum0;foreach(fuearr〔1〕asfi){ffarrexplode(,fi);if(count(ffarr)1){fcnamejsondecode({。ffarr〔1〕。})methstrjsondecode({。ffarr〔1〕。})methstr??;fiarexplode(,,ffarr〔0〕);可以是多个变量,合并成了字符串for(c0;ccount(fiar)1;c){fistr。name〔trim(fiar〔c〕)〕。,;}左侧参数fistr右侧常量参数methstrfistrmbsubstr(fistr,0,mbstrlen(fistr)1);htmstrstrreplace(fuearr〔0〕〔finum〕,fcname(fistr,methstr),htmstr);}else{htmstrstrreplace(fuearr〔0〕〔finum〕,name〔trim(fuearr〔1〕〔finum〕)〕,htmstr);};}}htmstrpregreplace({cmpage(。)},,htmstr);}
  loopfunction函数,模块内循环,分页循环functionloopfunction(htmstr,upaprarray()){pregmatchall({cmlist(。?)}(。?){cmlist}is,htmstr,listarr);li0;foreach(listarr〔0〕askloop){pregmatch({。}U,kloop,marr);nametrim(jsondecode({。listarr〔1〕〔li〕。})name);ttrim(jsondecode({。listarr〔1〕〔li〕。})t);ftrim(jsondecode({。listarr〔1〕〔li〕。})f);otrim(jsondecode({。listarr〔1〕〔li〕。})o);ctrim(jsondecode({。listarr〔1〕〔li〕。})c??);ltrim(jsondecode({。listarr〔1〕〔li〕。})l??);pagesizetrim(jsondecode({。listarr〔1〕〔li〕。})pagesize??);if(pagesize){acountdb(t)field(f)where(c)count(1);pagecountceil(acountpagesize);if(pagecount0){pagecount1;}ipageupapr〔ipage〕;pagepagefunction(pagesize,pagecount,upapr,ipage);upapr〔pagecount〕empty(upapr〔pagecount〕)?pagecount:(int)upapr〔pagecount〕;if(pagecountupapr〔pagecount〕){upapr〔pagecount〕}if(upapr〔pagecount〕1){upapr〔page〕}adb(t)field(f)where(c)order(o)page(ipage,pagesize)select();htmstrstrreplace({page},page,htmstr);}else{adb(t)field(f)where(c)order(o)limit(l)select();}key1;foreach(aasname){name〔key〕hs。blockfunction(listarr〔2〕〔li〕,name,key,name);}htmstrstrreplace(listarr〔0〕〔li〕,hs,htmstr);arraysplice(a,0,count(a));}returnarray(htmstrhtmstr,upaprupapr);}
  blockfunction函数,替换循环字段functionblockfunction(pregstr,name,key,mdname){pregmatchall({f。mdname。(。?)}is,pregstr,fuearr);finum0;foreach(fuearr〔1〕asfi){ffarrexplode(,fi);if(count(ffarr)1){fcnametrim(jsondecode({。ffarr〔1〕。})fcname);methstrtrim(jsondecode({。ffarr〔1〕。})methstr??);fiarexplode(,,ffarr〔0〕);可以是多个变量,合并成了字符串for(c0;ccount(fiar)1;c){fistr。name〔trim(fiar〔c〕)〕。,;}左侧参数fistr右侧常量参数methstrfistrmbsubstr(fistr,0,mbstrlen(fistr)1);pregstrstrreplace(fuearr〔0〕〔finum〕,fcname(fistr,methstr),pregstr);}else{pregstrstrreplace(fuearr〔0〕〔finum〕,name〔trim(fuearr〔1〕〔finum〕)〕,pregstr);};pregstrstrreplace({key},key,pregstr);}}
  loopcatfunction嵌套循环functionloopcatfunction(htmstr){pregmatchall({cmbox}(。?){cmbox}is,htmstr,listarr);li0;foreach(listarr〔1〕askcat){pregstrcheckcatfunction(kcat);htmstrstrreplace(listarr〔0〕〔li〕,pregstr,htmstr);}}
  checkcatfunction嵌套循环functioncheckcatfunction(hsstr){获取结束标志pregmatch({cmlist(。)}i,hsstr,marr);enptrim(jsondecode({。marr〔1〕。})enp??cmlist);pregmatchall({cmlist(。?)}(。?){。enp。}is,hsstr,listarr);k0;foreach(listarr〔1〕assm){ttrim(jsondecode({。sm。})t);ftrim(jsondecode({。sm。})f);otrim(jsondecode({。sm。})o);ctrim(jsondecode({。sm。})c??);ltrim(jsondecode({。sm。})l??);nametrim(jsondecode({。sm。})name);adb(t)field(f)where(c)order(o)limit(l)select();key1;foreach(aasname){hs。blockfunction(listarr〔2〕〔k〕,name,key,name);替换参数pregmatch(。name。〔(。?)〕i,listarr〔2〕〔k〕,csarr);if(csarr){hsstrreplace(csarr〔0〕,name〔csarr〔1〕〕,hs);}}hsstrstrreplace(listarr〔0〕〔k〕,hs,hsstr);k;}if(pregmatch({cmlist(。)}i,hsstr,isrr)){returncheckcatfunction(hsstr);}}
  pagefunction函数,分页函数functionpagefunction(pagesize,pagecount,upapr,ipage){totalpagt10;if(upapr〔cathtmlpath〕){cathtmlpath。upapr〔cathtmlpath〕;}if(ipage1){pagstr。}else{pagstr。}if(ipage5){startsp1;if(pagecounttotalpagt){}else{}}else{if(pagecounttotalpagt){startsp1;}else{endspipage5;startspipage4;if(ipagepagecount5){startspipage(totalpagt(pagecountipage))1;}}}for(is){if(is1){cathtmlnameupapr〔cathtmlname〕;}else{cathtmlnameupapr〔cathtmlname〕。。}if((int)ipage(int)is){pagstr。liclassactive。is。}else{pagstr。li。is。}}if(ipagepagecount){pagstr。}else{pagstr。}pagstr。}
投诉 评论 转载

何时睡,睡多久,孩子才会更聪明何时睡,睡多久,孩子才会更聪明!秋天快要结束了,冬天正悄悄来临。季节交替时,人体对睡眠的欲望就会更大。而睡眠对于孩子而言尤为重要,今天就和大家分享最科学的孩子睡眠时间表。……曼市警方确认一名20多岁的男子因涉嫌强奸和殴打女性而被捕直播吧1月31日讯大曼彻斯特警方发布公告确认,一名20多岁的男子因涉嫌强奸和殴打女性而被捕。大曼彻斯特警方公告:我们在今天早些时候获悉,一名女性通过发布照片和视频的……育碧喜加一经典模拟经营游戏纪元1404即将限免IT之家12月5日消息,育碧Ubisoft将于今日下午3:50开展35周年庆祝活动,届时会有一系列直播。根据官方消息,经典的模拟经营游戏《纪元1404》(Anno1404)将于……英雄联盟拳头音乐发布Sessions黛安娜专辑,43首新曲供作者:NGA浅川灬(拳头游戏一直被玩家调侃为拳头音乐,其实是有原因的,他们在上个月为了宣传动画《双城之战》,特地制作了一张高质量的专辑。除此之外,拳头游戏音乐团队在今年早……阿奇霉素是个好药,可是用错了却会致命!医生告诉你应该怎么用有位妈妈最近非常着急,因为孩子已经咳嗽一个月了,用了很多药物还不见好转!头孢、阿莫西林天天吃,各种止咳药、清热解毒的药物也是天天用。就连孟鲁斯特都用上了,还是不见效!……描述禅心的散文总有一滴泪,悬在那素手弹拨的古筝里,静听禅音,悟出的竟是那么多沉浮的心事。寂寞也罢、痛苦也罢,都会随着时间跌落在岁月的岸边。下面是美文阅读网小编给大家推荐的有关禅心的散文,供大……汇流造句用汇流造句大全31。乐山大佛为峨眉山风景名胜区的一个重要景点,位于峨眉山以东、岷江、大渡河、青衣江三江汇流处。32。整体而言,本论文系发展一个具有自我测试功能的嵌入式系统之系统汇流排。……36氪专访硅谷霍夫曼船长改变未来的有5大力量,而中国不再co没有做过游戏设计的电视制作人不是好创业教父。很少有人的涉猎领域像硅谷天使投资人史蒂文霍夫曼的一样广泛,本科专业学习工程设计,研究生研究电影电视,从游戏公司出走创业,直至成……野性的呼唤读后感活在文字里的精神杰克伦敦是我最喜欢的作家之一。他于1876年生于美国旧金山,自幼家境贫寒,生活困顿。他做过报童,当过水手,曾在阿拉斯加淘过金,甚至还蹲过监狱正是这种在社会……绝地求生PUBG要免费了!吃鸡是就此重返巅峰,还是一蹶不振?绝地求生:PUBG要免费了!吃鸡是就此重返巅峰,还是一蹶不振?《绝地求生》还是终于没有走出免费的命运。在很早之前,蓝洞方面就一进传出了PUBG将要变成免费游戏的消息。当时……被追砍后跳桥受伤是否应承担刑事责任案情介绍:2012年10月4日3时许,被害人维某某在江阳区新马路的经穴按摩店闹事,公安民警调解完毕后,维某某欲打的离开时被犯罪嫌疑人胡某某、文某拦着,维某某遂骂了二人,后双方发……php手把手教你做网站(三十五)网站静态生成三实战标签的实现前边介绍了,pregmatchall,pregmatch以及用到的标签,下面我们来以具体的实例来说明标签的解析。模板news。html包含了include标签(通用头部,……
中国足球协会坚决拥护纪检监察机关对陈戌源进行审查调查光遇三个先祖站一排,好像在说一句话蜡烛拿过来吧你主播辛巴发力,促使人民网修改文章!已不在劣迹网红名单三亚海棠湾天房洲际酒店欧冠刺激一夜!2豪门出线3队出局,塞维利亚20埋隐患对越反击战后,中越交换战俘,越南方面脸色铁青,发生了什么?讲述一下我带孩子去看矮小症的一些事,儿童身高管理要趁早重拾信心的国家队今晚战胜阿曼可能性有多大?期待赢得出线的希望钙片晚上吃最好?如何判断自己是否缺钙?补钙你得先知道这些紧迫感来了?奇瑞瑞虎系DPi智能插混全系亮相,看这架势上市在大S离婚了恐怖如斯的哈登末节统治比赛,篮网四人得分20轻松战胜骑士
校党总支党建重点工作和亮点工作总结杭州0571开头的是什么电话俄歇电子能谱(AES)案例介绍玛丽黛佳明星产品有哪些这些火爆产品赶快入手手上基金全部被套,该如何自救次友人邱仲深韵其三小学总务工作总结JAVAdebug模式,数进的介绍与书写格式有关父爱如山的作文精选雪花膏适合什么肤质使用雪花膏怎么用最好过了预产期到底是催生还是静等呢就这样,我选择了书法

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找菏泽德阳山西湖州宝鸡上海茂名内江三亚信阳长春北海西安安徽黄石烟台沧州湛江肇庆鹤壁六安韶关成都钦州