您现在的位置是:首页 > .NET

.NET

asp.net(C#)中自动替换html标签示例

2020-11-19 09:44:46 .NET admin
在网站留言,回贴等富文本框中,为了安全起见,我们一般都不会允许用户直接录入Html标签,但为了丰富留言内容。我们会提供一些特殊的标记来代替Html标签。比如提供[p][/p]代替

,提供[a][/a]代替等。这时候
在网站留言,回贴等富文本框中,为了安全起见,我们一般都不会允许用户直接录入Html标签,但为了丰富留言内容。我们会提供一些特殊的标记来代替Html标签。比如提供[p][/p]代替<p></p>,提供[a][/a]代替<a></a>等。这时候,就需要我们在接收到用户留言后,将这些特殊的标记替换成对应的Html标签。下面是本站的一个自动替换Html标签的类,供大家参考:

namespaceAutoPage
{
publicclassOtherCs
{
publicstaticstringReplaceHtml(stringoldStr)
{
/*顺序不可变,特别是将<与>替换成"&lt;"与" &gt;"的一定要在其它替换前,因为如果把它放在其它替后,它就会把其它替换后的<与>也替换成"&lt;"和" &gt;"了。*/
newStr=newStr.Replace("<","lt;");
newStr=newStr.Replace(">","gt;");
newStr=newStr.Replace("","nbsp;");
newStr=newStr.Replace("[code]","<spanclass=\"code\">");
newStr=newStr.Replace("[/code]","</span>");
newStr=newStr.Replace("[strong]","<strong>");
newStr=newStr.Replace("[/strong]","</strong>");
newStr=newStr.Replace("[p]","<p>");
newStr=newStr.Replace("[/p]","</p>");
newStr=newStr.Replace("\r\n","<br/>");

//替换[URL]标签,即<a>标签,这里就要用到正则了。
//先匹配出需要替换成a标签的全部部分。用户录入的原始值类似于:[URLhref="http://www.lmwlove.com"]程序食堂[/URL]
stringregstr_1="\\[URL\\s*href=(['\"\\s]?)[^'\"\\s]+\\1\\][^\\[\\]]+\\[/URL]";

//匹配[URLhref="http://www.lmwlove.com"]程序食堂[/URL]中的http://www.lmwlove.com,即url地址
stringregstr_2=@"http://([\w-]+\.)+[\w-]+(/[\w-./?%=]*)?";

//匹配[URLhref="http://www.lmwlove.com"]程序食堂[/URL]中的程序食堂,即url中的文本
stringregstr_3=@"\]+[^\[\]]+(\[+)";

stringurl=string.Empty;
stringurlname=string.Empty;
Regexregex=newRegex(regstr_1);
MatchCollectionmatchs=regex.Matches(newStr);
foreach(Matchminmatchs)
{
Regexregex_1=newRegex(regstr_2);
Matchmatch=regex_1.Match(m.Value);
if(match.Success)
{
url=match.Value;
}

regex_1=newRegex(regstr_3);
match=regex_1.Match(m.Value);
if(match.Success)
{
urlname=match.Value.Substring(1,match.Value.Length-2);
}

//筛选出了链接的url与文本后,重新组织正确的<a>标签
newStr=newStr.Replace(m.Value,"<ahref=\""+url+"\"target=\"_blank\"class=\"content_href\">"+urlname+"</a>");
}

returnnewStr;
}
}
}