zoukankan      html  css  js  c++  java
  • 彻底修正不规范的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

  • 相关阅读:
    VisualCaptcha – 灵活的可视化验证码解决方案
    Web Uploader
    Concise
    15个前卫的 HTML5 & CSS3 网页设计作品
    Breach
    字体大宝库:20款超细英文字体免费下载
    使用 JavaScript 实现灵活的固定导航功能
    10套免费的 Photoshop UI 元素以及 PSD 素材
    使用 CSS & jQuery 制作一款漂亮的多彩时钟
    我在美国读博士:才发现美国高等教育如此残酷
  • 原文地址:https://www.cnblogs.com/XiaoG/p/1554448.html
Copyright © 2011-2022 走看看