在网页上呈现格式化的HTML字符串

时间:2015-08-10 17:38:51

标签: html angularjs

我有一堆HTML文本,如下所示:

<p><strong>Pellentesque habitant morbi tristique</strong> senectus et netus et malesuada fames ac turpis egestas. 
Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, 
ante. Donec eu libero sit amet quam egestas semper. 
<em>Aenean ultricies mi vitae est.</em> Mauris placerat 

这是用户将发布论坛的文本,然后将此格式化的字符串存储在服务器上。我在另一个页面上显示此文本,但希望在用户格式化时将其呈现,例如:

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas。 Vestibulum tortor quam,feugiat vitae,ultricies eget,tempor sit amet, 赌注。 Donec eu libero坐在amet quam egestas semper。 Aenean ultricies mi vitae est。 Mauris placerat

我尝试过使用<pre><p>和其他标签,但他们只是打印出原始HTML而不是使用给定的格式。我目前正在使用Angular.JS作为我的页面。

示例文本来自http://html-ipsum.com/,&#34; Kitchen Sink&#34;示例

2 个答案:

答案 0 :(得分:0)

听起来,在存储HTML的过程中,您已经转移了HTML实体(即将<转换为&lt;,这类事情。

我不知道您正在使用哪种语言,但几乎可以用任何语言来浏览HTML字符。 Here's an answer about doing it in JavaScripthtml_entity_decode()方法将在PHP中完成。对于您正在从事的任何语言,只需研究&#34; unescape html实体&#34;用那种语言。

警告:由于您无法使用HTML,因此存在用户可能编写顽皮内容的风险(例如,带有某些恶意JS代码的<script>标记)。确保你在线上的任何地方清理掉任何令人讨厌的HTML。

答案 1 :(得分:0)

您可能存储字符串uuencoded,因此它会显示字面上显示的代码。

我会仔细检查您的原始数据存储以验证这一点。

无论如何这不是推荐您使用代码的方式。您基本上是邀请恶意用户将恶意代码注入您的其他用户。

当允许用户输入任何html时,最好只允许一小部分标签(以及一小部分属性),即使这样,也很难做到正确。

有关详情,请参阅Cross-Site Scripting (XSS) Tutorial