知修

知而修之方为悟

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

(最后修补日期:2009.9.7)

我在以前的一篇随笔“对于用户上传不规划Html而导致页面布局错乱的一简单解决方法”介绍了使用正则解决页面布局错乱的方法,那种方法只能解决部分情况,对于一些比较特殊的Html代码就无能为力了,一直想完善这个解决方法的,今天下定决心重新思考了解决方法。

Html错乱无非是标签不完整导制的,在实际程序中往往是用户直接把其它网页的内容粘贴到在线编辑器、或直接手动改写Html代码引起的,当然不乏有人恶意破坏,所以这次我使用类似语法分析的方式来修正不规范的HTML代码,不多说了,看代码吧:

代码:  (V0.2_09.9.7)

    public static class FormatHelper
    {   
Code
}

使用示例:

string badHtml = "<div><p>hi</p></div><div><p>这是测试<table><tr><td>这里少了<p>table/tr/td</p>的结束标签<hr>少了div的结束标签";
string repairedHtml = FormatHelper.RepairHTML(badHtml);

得到的repairedHtml 结果为:

<div><p>hi</p></div><div><p>这是测试<table><tr><td>这里少了<p>table/tr/td</P></TD></TR></TABLE></p><hr/>少了div的结束标签</DIV>

性能分析:

RepairHTML函数采用递归的方式对输入的字串进行分析,递归的次数取决于输入字串中含有的Html标签数(包括自定义的标签,如:<mytag></mytag>),循环的次数最大为=1+2+3+…+n  (假设输入字串的长度为n) ,即:n(n-1)/2  ,所以时间复杂度可认为是:O(n^2)

 

注:我只是做了些简单的测试,尚未发现bug,但不表示程序一定能正确运行,如你发现问题请告诉我,我也会不断完善这个小功能的。

(转载、使用请注明作者XiaoG、原文链接:http://www.cnblogs.com/XiaoG/archive/2009/08/26/1554448.html

posted on 2009-08-26 17:01  BoolYang  阅读(1997)  评论(3编辑  收藏  举报