注册 登录
编程论坛 ASP.NET技术论坛

[求助]C#中怎样过滤Htm代码

冰残剑 发布于 2007-05-31 16:22, 2337 次点击
鄙人想写一个方法用来过滤掉文本框的Html代码,不知如何写起??
25 回复
#2
GrimFish2007-05-31 16:41
文本框怎么可能出现html代码呢?看不懂想表达什么
#3
冰残剑2007-05-31 16:48
你不会往文本框里输入Htm代码啊
#4
冰残剑2007-05-31 16:50
还请指点一二,有没有现成的方法,听说是用正则表达式过滤的
#5
GrimFish2007-05-31 16:52

过滤有必要么,直接放进数据库不一样?

#6
GrimFish2007-05-31 16:55
string sNum = ">FS<><><><";
sNum.Replace(">", "想过滤成什么就过滤什么吧");
#7
冰残剑2007-05-31 16:58

荤,这样得到的数据启不是很乱。
我的意思就是要阻止用户输入Html代码,即使他输入了也不会报错,就是默认的把Htm代码全部去掉。

[此贴子已经被作者于2007-5-31 17:11:03编辑过]

#8
GrimFish2007-05-31 17:32
sNum.Replace("<", "&lt;");
sNum.Replace(">", "&gt;");
sNum.Replace(" ", "&nbsp;");

#9
冰残剑2007-05-31 17:40

哎,我是想把Htm代码删除掉,而不是替换;

#10
GrimFish2007-05-31 17:42

你哎个毛。送你一句话,真的不适合编程

sNum.Replace("<", "");
sNum.Replace(">", "");

#11
冰残剑2007-05-31 17:45
我草你这猪,不会就别装懂

sNum.Replace("<", "");
sNum.Replace(">", "");

你上面这样有个鸟用

比如"<object>",这个经你过滤后还剩下 "object" ;你这猪
#12
GrimFish2007-05-31 17:48
你个SB,那你把所有的英文字母全部屏蔽吧,html都是英文字母组成的,
你个SB要表达什么?连尊重别人的回答都不会?

&lt;object&gt;
是根本不会被浏览器解释为html语法的,页面会直接转换为 <object> 输出。
#13
GrimFish2007-05-31 17:50
连TMD 什么叫html都不知道,

在HTML中,只有在<>两个尖括号中的,浏览去才会去解释他,无论错误还是正确。
#14
冰残剑2007-05-31 17:50

自己先毛还想别人尊重,草

#15
冰残剑2007-05-31 17:52
在入库之前你这样做,还不是要把&lt;...&gt;这个里边的字母都保存进数据库了,有啥用
#16
GrimFish2007-05-31 17:55
你太搞了。那么我问你,既然用户想输入&lt;object&gt;,自然有他的道理,你总不可能把上千的html语法全部写到正则里面。你把他转义为&amp;lt;object&amp;gt;,根本就不存在危险的html
#17
冰残剑2007-05-31 17:59

很多时候根本就不需要这些个东西,我的主题问的就是怎么去掉,没涉及那么多

#18
GrimFish2007-05-31 18:01
那么请你把所有要过滤的的html语法全部贴出来。因为这些语法是一写组合,不存在规律性,用正则也号,用数组也好,都得一个一个来过滤
#19
GrimFish2007-05-31 18:10
using System.Text.RegularExpressions;

string sNum=TextBox1.Text
sNum = Regex.Replace(sNum ,"<[^>]+>","");

这不是真正意义上过滤HTML语法,他只能把<>里的所有东西过滤为空格,包括正常的用户信息。
#20
冰残剑2007-05-31 18:13
没折,只能写一个粗糙的过滤算法,特殊情况下还是会显示Htm 字符
#21
冰残剑2007-05-31 18:14

我原先就是这样写的

#22
rainic2007-05-31 18:28
为什么不用Server.HtmlEncode?
#23
冰残剑2007-05-31 18:29
回复:(rainic)为什么不用Server.HtmlEncode?
就是不会才来这里问,劳驾你说详细点!
#24
铲铲2007-05-31 18:43
[CODE]public static string TakeOutHTML(string HTMLInput)
{
System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex("<.+?>", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
return reg.Replace(HTMLInput, string.Empty);
}[/CODE]
类似这样,用一个正则表达式类,替换后得到的就是过滤全部<>标记的纯文本。


大家不要吵,搞技术就搞技术,吵架上火,又解决不了问题。
#25
冰残剑2007-05-31 20:27
汗颜
#26
huifeidebao2007-06-12 16:54
Response.Write( Server.HtmlDecode("<b>fdfd</b>"));

最简单的。
1