网络编程
位置:首页>> 网络编程>> Asp编程>> 如何过滤中国站长站(chianz)文章干扰码(2)

如何过滤中国站长站(chianz)文章干扰码(2)

 来源:asp之家 发布时间:2008-01-04 20:14:00 

标签:干扰码,中国站长站,正则表达式,javascript

下面讲一下具体的实现方法:

显然要过滤掉这些规律的干扰码我们必须请可爱的正则表达式出马,让它来帮忙打扫打扫。这里大家如果对正则表达式不是很了解可以先阅读:《正则表达式30分钟入门教程

一、客户端javascript实现方法:

我们知道在添加编辑文章的后台,一般都是用在线编辑器。所以过滤干扰码就是过滤写在在线编辑器中的内容。

先设计一个过滤干扰码的按钮:


<input type="button" value="过滤干扰码" onclick="doclear()" > 


点击按钮后就会执行doclear()函数来清除干扰码。

首先就是要用js代码取得文章的内容:


var aspxhome = EditorId.EditorContentId.document.body.innerHTML; 


这里EditorId就是调用编辑器的框架页的id,EditorContentId就是编辑器中作为容器的页面id。

当然如果编辑器提供了一些便捷的调用函数,我们就可以直接使用。


function doclear(){
// 读取编辑器内容
var aspxhome = EditorId.EditorContentId.document.body.innerHTML; 
//下面使用正则表达式过滤干扰代码,当然如果以后增加了新的干扰码方式,再相应的增加或修改一下代码即可。
aspxhome = aspxhome.replace(/(<DIV class=(.+?)>).+?<\/DIV>/ig, "") ;
aspxhome = aspxhome.replace(/(<SPAN class=(.+?)>).+?<\/SPAN>/ig, "") ;
aspxhome = aspxhome.replace(/(<P class=(.+?)>).+?<\/P>/ig, "") ;
aspxhome = aspxhome.replace(/(<FONT color=(.+?)>).+?<\/FONT>/ig, "") ;
//写过滤后的内容到编辑器中
EditorId.EditorContentId.document.body.innerHTML=aspxhome;


二、服务器端asp过滤方法:

服务器端获取文章内容就简单了,不罗嗦了!相关文章推荐:ASP中RegExp对象正则表达式语法及相关例子

代码如下:


strContent=request("content")'根据实际情况修改为文章内容 
Set Are = New RegExp
Are.IgnoreCase = True
Are.Global = True 
Are.Pattern = "(<div class=(.+?)<\/div>)"
strContent = Are.Replace(strContent, "")
Are.Pattern = "(<span class=(.+?)<\/span>)"
strContent = Are.Replace(strContent, "") 
Are.Pattern = "(<p class=(.+?)<\/p>)"
strContent = Are.Replace(strContent, "") 
Are.Pattern = "(<font color=(.+?)<\/font>)"
strContent = Are.Replace(strContent, "") 
'程序运行到这里文章干扰码就过滤干净了 
Set Are = Nothing 


总结

好了,两种方法介绍完毕了,可能你已经发现了,使用这种方法有一个缺点,就是会过滤掉所有的正则表达式中匹配的字符,而这些字符也许并不都是干扰码。 所以我这个方法并不完美。

不过在过滤干扰码之前我们只要先看看文章源代码,看看是否有其他正常的文字可能被清理,如果有修改一下就可以了。有什么问题欢迎讨论!

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com