欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » C# » 正文

热门阅读

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

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

namespace AutoPage
{
public class OtherCs
{
public static string ReplaceHtml(string oldStr)
{
/*顺序不可变,特别是将<与>替换成"&lt;"与" &gt;"的一定要在其它替换前,因为如果把它放在其它替后,它就会把其它替换后的<与>也替换成"&lt;"和" &gt;"了。*/
newStr=newStr.Replace("<","lt;");
newStr=newStr.Replace(">","gt;");
newStr=newStr.Replace("","nbsp;");
newStr=newStr.Replace("[code]","<divclass=\"code\">");
newStr=newStr.Replace("[/code]","</div>");
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标签的全部部分。用户录入的原始值类似于:[URL href="http://www.lmwlove.com"]程序食堂[/URL]
string regstr_1 = "\\[URL\\s*href=(['\"\\s]?)[^'\"\\s]+\\1\\][^\\[\\]]+\\[/URL]";

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

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

string url = string.Empty;
string urlname = string.Empty;
Regex regex = new Regex(regstr_1);
MatchCollection matchs = regex.Matches(newStr);
foreach (Match m in matchs)
{
Regex regex_1 = new Regex(regstr_2);
Match match = regex_1.Match(m.Value);
if (match.Success)
{
url = match.Value;
}

regex_1 = new Regex(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, "<a href=\"" + url + "\" target=\"_blank\" class=\"content_href\">" + urlname + "</a>");
}

return newStr;
}
}
}

因为这个方法中用到了C#中的正规,所以要引用命名空间System.Text.RegularExpressions

来源:.net学习网
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论1条
  • #1楼  评论人:king  评论时间:2014-5-16 15:34:25
  • 太不智能了,用safehelper吧,开源的类库,好用!
发表评论:
留言人:
内  容:
请输入问题 96+62=? 的结果(结果是:158)
结  果: