• 彻底修正不规范的HTML,避免引起页面布局错乱


    (最后修补日期: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

  • 相关阅读:
    VUE的生命周期
    ID生成算法(二)
    ID生成算法(一)——雪花算法
    HTTP状态码和支持的方法
    水平居中/垂直居中/水平垂直居中总结
    判断数组类型的4种方法
    WebSocket浅谈
    vue中使用定时器时this指向
    银行转账业务梳理
    支付那些事儿
  • 原文地址:https://www.cnblogs.com/XiaoG/p/1554448.html
Copyright © 2020-2023  润新知