2010-05-21 58 views
4

比方说,我有一些HTML这样的:显示格式错误的HTML“安全?”

<ol><li>a knock at the door, I'll be back in a second 

我显示为,我产生一个div中内嵌HTML。 有没有什么办法可以阻止内部格式错误的HTML搞砸HTML之后的整个文档?

我意识到,智能解析它是一种选择(因为我确实在服务器端),但我正在寻找一个更轻的解决方案。

编辑我知道我可以用实体替换<>,但我想保持格式(在合理范围内)。

+1

我有一个类似的问题,用户将Word内容粘贴到RADEdit控件中。后备数据库字段不够大,Word内容可怕的Word-HTML。该页面在现场打破了一半<标签在那里。相反,作为解决办法,我们在内容超过该字段时阻止保存。我们最初追求的一个选择是将格式错误的HTML封装在帧标签中。并让浏览器找出结果,并防止格式错误的HTML出现混乱的布局。但框架需要触摸屏幕的一侧,所以如果它不合适,我们就不会保存。 – ggonsalv 2010-05-21 16:03:13

+0

@ggonsalv我想过Iframe标签,但是你需要提供另外一个页面来实际生成每个内部HTML ...意思是src是唯一的出路,对吧? – 2010-05-21 16:09:51

+0

不是说它太高了,真的... – 2010-05-21 16:18:41

回答

4

尽管您正在寻找一个比HTML解析更轻松的解决方案,但您可能需要考虑使用HTML PurifierHTML Tidy,因为它应该为您处理破碎的标签 - 这实际上就是它们的用途。

+0

可能。我很期待一个俗气的HTML解决方案,但我会在Ruby中看到其中哪些是最简单的。谢谢! – 2010-05-21 16:10:42

+0

我想** HTML Tidy **会更容易从Ruby调用,但我根本没有Ruby体验。不管你做什么,祝你好运! :) – pinkgothic 2010-05-21 16:47:46

+0

谢谢@pinkgothic,因为这个问题是一次性的,我决定只是规定'<' and '>',但我很好奇,如果有什么关于HTMl,我不知道。谢谢。 – 2010-05-21 16:50:31

1

更换<>与ASCII/Unicode的等价物&#60;&#62; OR &lt;&gt; OR \u003c\u003e

+0

对不起,我可以看到问题不清楚。我可以这样做,但如果可能的话我想保留格式。编辑问题。 – 2010-05-21 15:34:14

2

你需要的嵌入式文本支持HTML?如果没有,你可以去掉所有的HTML标签,或者用换码替换<>。或者,您可以将文本作为Markdown或任何其他非HTML语言存储在服务器上,并即时生成良好的HTML。

编辑:如果您真的需要HTML,我建议您在HTML代码片段上运行一个XML验证器。您实际上不需要查看XML的结构:如果代码片段格式正确,那么它很可能不会破坏布局的其余部分。

+0

是的,它必须支持HTML,对不起,我没有提到。 – 2010-05-21 15:35:47