HTML呈现逻辑无效

时间:2010-08-04 17:50:14

标签: html

几乎所有浏览器都会在渲染无效HTML时使用一定的余地。例如,他们会像x < y一样呈现x &lt; y,因为它“清楚”<是一个文字字符,而不是HTML标记的一部分。

在哪里可以找到该逻辑作为单独的“清理”模块?此类模块会将x < y转换为x &lt; y

5 个答案:

答案 0 :(得分:3)

尝试查看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。我相信大多数常用语言都有Tidy库,可以为您清理HTML。如果您使用的是PHP,则有PHP Tidy

<强>更新

我注意到你说你正在使用C#。您也可以将Tidy与C#一起使用。这是我找到的东西。我不是用C#开发的,所以我没有试过这个YMMV:

Fix Up Your HTML with HTML Tidy and .NET

答案 1 :(得分:0)

不确定你究竟是什么意思,但也许PHP函数htmlentities可以帮助你。

答案 2 :(得分:0)

在浏览器中渲染无效的HTML是一种可怕的猜测,你真的不应该试图模仿它(打破)。但是,可以使用正则表达式替换某些事件:

preg_replace('/(\s)<(\s)/', '$1&lt;$2', $data);

答案 3 :(得分:0)

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

答案 4 :(得分:-1)

编辑:我假设你正在使用PHP,因为你没有指定

使用strip_tags:

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

这将保留安全标签(由您定义),并删除其他所有内容。