软件下载 | 资讯教程 | 最近更新 | 下载排行 | 一键转帖 | 发布投稿
您的位置:最火下载站 > 网络编程 > ASP.NET > ASP.NET 实现 HTML 智能检查,修复

ASP.NET 实现 HTML 智能检查,修复

  烈火教程 在采用富文本框添加信息时,如果直接用复制粘贴时,如果没的复制完整或是其它的情况,有可能会导致html标签不配对,如没有,等一些标签,当把这些信息直接在显示在页面中时,如果页面同样使用了原信息中不配对的标签,则可能会导致页面混乱,故写此方法来检查标签配对是否完整,并自动补充未配对的标签。

1
2 public string AutoCheckHtml(string htmlStr)
3 {
4 string checkTags = "table,tbody,tr,td,p,div,span";
5 Stack st = new Stack();
6 Regex regStart = new Regex(@"<(?<tag>[\w]+)[\s\S]*?>");
7 Regex regEnd = new Regex(@"<\/(?<tag>[\w]+)[\s\S]*?>");
8
9 StringBuilder sb = new StringBuilder();
10
11 string tagName;
12 foreach (string s in htmlStr.Split('<'))
13 {
14 // filter first string that have no '<'
15 if (sb.Length == 0)
16 {
17 sb.Append(" ");
18 continue;
19 }
20 Match m;
21 //recode start tag
22 if ((m = regStart.Match("<" + s)).Success &&
23 (tagName = m.Groups["tag"].Value) != "" &&
24 checkTags.IndexOf(tagName.ToLower()) != -1)
25 {
26 st.Push(tagName);
27 }
28 //process end tag
29 else if ((m = regEnd.Match("<" + s)).Success &&
30 (tagName = m.Groups["tag"].Value) != "" &&
31 checkTags.IndexOf(tagName.ToLower()) != -1)
32 {
33 //have no start tag
34 if (st.Count == 0 || st.Peek().ToString() != tagName)
35 {
36 sb.AppendFormat("<{0}>\r\n", tagName);
37 }
38 else
39 st.Pop();
40 }
41 sb.Append("<" + s);
42 }
43 //Add end tags
44 while (st.Count > 0)
45 {
46 sb.AppendFormat("</{0}>\r\n", st.Pop());
47 }
48 return sb.ToString();
49 }

  1. checkTags 是要检查的标签,列在其中的才会检查
  2. regStart和regEnd 开始标签和节束标签的正则表达式(代码中随手所写,可能不能匹配一些情况,根据实际需要再作补充)

  另外一种相关的处理,富文本的分页,如直接根据字符串长度截取,可能会从标签中间截断,或者把开始标签和结尾标签分开,根据以上原理同样可写出智能分页的代码.呵呵.等有时间写出来了再贴上来!

  原文:http://www.cnblogs.com/hanf/archive/2009/08/16/1547020.html

    相关阅读
    网友评论
    栏目导航
    推荐软件