dede分页过滤代码分析
发布:zhuangbin | 发布时间: 2009年11月26日析:分面信息有几种显示情况,当然代码复杂得多,包含有链接等。[……]表示总页数不确定。
第一页:[1][2][……][下一页]
中间页:[上一页][1][2][……][下一页]
最后页:[上一页][1][2][……]
过滤表达式:
{dede:trim}(<P><SPAN class=title1><STRONG><\/p>)?(<p align='center'><b>)(<font color='red'>\[1\]<\/font> )?(<a href='\/51hkj\/Article\/ShowArticle.asp\?ArticleID=284&Page=)[0-9]{1,2}('>)(\[2\]|上一页)(<\/a>)(.)+(>下一页<\/a>)?\/b><\/p>{/dede:trim}
为了说明问题,重新排版,按功能块分断:
{dede:trim}
(<P><SPAN class=title1><STRONG><\/p>)?
(<p align='center'><b>)
(<font color='red'>\[1\]<\/font> )?
(<a href='\/51hkj\/Article\/ShowArticle.asp\?ArticleID=284&Page=)[0-9]{1,2}('>)
(\[2\]|上一页)(<\/a>)
(.)+
(>下一页<\/a>)?<\/b><\/p>
{/dede:trim}
再取掉转义字符“\”,代码如下(当然这不能用了,只是为了看起来更清楚):
{dede:trim}
(<P><SPAN class=title1><STRONG></p>)?
(<p align='center'><b>)
(<font color='red'>[1]</font> )?
(<a href='/51hkj/Article/ShowArticle.asp?ArticleID=284&Page=)[0-9]{1,2}('>)
([2]|上一页)(</a>)
(.)+
(>下一页</a>)?</b></p>
{/dede:trim}
现在逐一解释:用“//”表示
{dede:trim}
//dede标记
(<P><SPAN class=title1><STRONG></p>)?
//匹配括号中的字符串,0个或1个,因为三种页面(第一页、中间页、最后页)有些没有这段代码
(<p align='center'><b>)
//匹配括号中的字符串,必须有这个字串
(<font color='red'>[1]</font> )?
//匹配括号中的字符串,0个或1个,这是第一页出现的字串,注意[1]
(<a href='/51hkj/Article/ShowArticle.asp?ArticleID=284&Page=)[0-9]{1,2}('>)
//匹配一个链接,<a href='……&Page=42'>,[0-9]{1,2}表示1位或2位数字
([2]|上一页)(</a>)
//匹配“[2]”或者“上一页”,第一个链接后面必是这二者之一
//接下来是……
(.)+
//一个任意字串
//任意字串之后,快结束了……
(>下一页</a>)?
//匹配括号中的字符串,0个或1个,只要不是最后一页,就有“下一页”
</b></p>
//分页信息结束的地方,必有“</b></p>”
{/dede:trim}
//dede结束标记
- 相关文章:
发表评论
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。





