国庆期间有网友问我DEDE采集里标题怎么过滤"(1)"这样的()+里面数字或者其它的.那时在外面玩,就没帮他解决,今天突然想起,就动手帮他做了这个问题.
其实,这个问题对于会DEDE和正则表达式的人来说很简单,但是我就奇怪了,DEDE这么大的用户群,为什么就没一个人回答他呢,我知道在DEDE的QQ群里有好几个高手在.哎,人啊,有点本事出名了,就自命清高,不理人了.
我不是高手,我不会正则表达式,但是我是程序员,开发语言大致是相通的,所以我向来不拒绝网友的请求帮助,今晚,我花了两个小时,终于找出了结果,哎,有点丢人,对不起我的职业啊.
其实很简单,采集节点设置的"标题过滤规则"里写上这行代码就可以的: {dede:trim}(//([0-9]*//)){/dede:trim}
我这里说明一下原因
([0-9]*) 中[0-9]表示数字0-9,一位数字,[]外面的*号表示可以多个,也就可以过滤大于9的几位数字,如10,11,12......
开始时,我一直只写{dede:trim}([0-9]*){/dede:trim}这个代码,结果发现过滤后,标题的()还在,只是过滤了里面的数字
后来才想到,()是特殊字符,不会当成是字符来过滤,如果要过滤的话,就要加 / 来进行转义
所以写成代码为: {dede:trim}(/([0-9]*/)){/dede:trim} 可是结果还是不行,和前面一样,还是有()留下来,没有过滤.
想了,测试了近一个小时,突然想到,可能在DEDE里会直接过滤一些字符,后来真发现了 / 这个符号没有了,果然是被过滤了,那我就加两个 / 试一下吧,过滤一个,那总会还留下一个吧. 测试一下,嘿嘿,成功了.
其实,真的很简单,我不会正则表达式,最后也是成功了啊,事情就是这样,多动手做做,总会成功,像别人说的,靠别人不行,一定得靠自己.