几乎所有浏览器都会在渲染无效HTML时使用一定的余地。例如,他们会像x < y
一样呈现x < y
,因为它“清楚”<
是一个文字字符,而不是HTML标记的一部分。
在哪里可以找到该逻辑作为单独的“清理”模块?此类模块会将x < y
转换为x < y
答案 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 < y
</body>
</html>
请注意,x < y
已更改为x < y
。
<强>更新强>
根据您的评论,您应该使用Tidy来清理HTML。我相信大多数常用语言都有Tidy库,可以为您清理HTML。如果您使用的是PHP,则有PHP Tidy。
<强>更新强>
我注意到你说你正在使用C#。您也可以将Tidy与C#一起使用。这是我找到的东西。我不是用C#开发的,所以我没有试过这个YMMV:
答案 1 :(得分:0)
不确定你究竟是什么意思,但也许PHP函数htmlentities可以帮助你。
答案 2 :(得分:0)
在浏览器中渲染无效的HTML是一种可怕的猜测,你真的不应该试图模仿它(将打破)。但是,可以使用正则表达式替换某些事件:
preg_replace('/(\s)<(\s)/', '$1<$2', $data);
答案 3 :(得分:0)
HTML 5(草案)规范包括基于浏览器处理错误标记的方式的a detailed parsing algorithm。
答案 4 :(得分:-1)
编辑:我假设你正在使用PHP,因为你没有指定
使用strip_tags:
$content = strip_tags($content, array('<b><i>'));
这将保留安全标签(由您定义),并删除其他所有内容。