代码之家  ›  专栏  ›  技术社区  ›  JoelFan

无效的HTML呈现逻辑

  •  2
  • JoelFan  · 技术社区  · 14 年前

    几乎所有的浏览器在呈现无效的HTML时都会有一定的回旋余地。例如,它们将渲染 x < y 好像是写好的 x &lt; y < 作为文本字符,而不是HTML标记的一部分。

    作为一个单独的“清理”模块,我在哪里可以找到这个逻辑?这样的模块将转换为 x<y x&书信电报;y

    5 回复  |  直到 14 年前
        1
  •  3
  •   Vivin Paliath    14 年前

    试着看看源代码 Tidy

    运行Tidy之前的HTML:

    <html>
    
     <head>
      <title>boo</title>
     </head>
    
     <body>
       x < y
     </body>
    
    </html>
    

    运行Tidy后使用相同的HTML:

    <html>
    <head>
      <meta name="generator" content=
      "HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
    
      <title>boo</title>
    </head>
    
    <body>
      x &lt; y
    </body>
    </html>
    

    注意 x < y 已更改为 x &lt; y .

    根据您的评论,您可能应该使用Tidy来清理您的HTML。我相信大多数通用语言都有整洁的库,可以为您清理HTML。如果您使用的是PHP,那么 PHP Tidy .

    更新

    我注意到你说你在用C。你也可以用C#和Tidy。这是我找到的东西。我不是用C语言开发的,我也没有尝试过这么做:

    Fix Up Your HTML with HTML Tidy and .NET

        2
  •  0
  •   aletzo    14 年前

    不知道你到底是什么意思,但可能是PHP函数 htmlentities 我可以帮你。

        3
  •  0
  •   You    14 年前

    在浏览器中呈现无效的HTML是一种可怕的猜测,你真的不应该尝试去模仿它(它) 中断)。但是,可以使用regexp替换某些引用:

    preg_replace('/(\s)<(\s)/', '$1&lt;$2', $data);
    
        4
  •  0
  •   Quentin    14 年前

    HTML5(草案)规范包括 a detailed parsing algorithm 基于浏览器处理错误标记的方式。

        5
  •  -1
  •   Mike Caron    14 年前

    Edit:我假设您使用的是PHP,因为您没有指定

    使用标签:

    $content = strip_tags($content, array('<b><i>'));