将已清理的html转换回可显示的html

ana*_*rex 19 html javascript

我从已经消毒的数据库中获取html数据.

基本上我得到的是这样的:

<div class="someclass"><blockquote>
  <p>something here.</p>
</blockquote>
Run Code Online (Sandbox Code Playgroud)

等等.因此,如果我尝试显示它,它显示为

<div class="someclass"><blockquote> <p>something here</p> </blockquote>
Run Code Online (Sandbox Code Playgroud)

我想要的是在显示之前将其转换为正确的html,以便在没有标签的情况下正确显示内容.

使用javascript最简单的方法是什么?

我想在此注意我正在Adobe AIR中工作.所以我没有任何其他选择.

CMS*_*CMS 35

您可以创建一个元素,将编码的HTML分配给其innerHTML,并从插入时创建的文本节点中检索nodeValue.

function htmlDecode(input){
  var e = document.createElement('div');
  e.innerHTML = input;
  return e.childNodes[0].nodeValue;
}

htmlDecode('&lt;div class="someclass"&gt;&lt;blockquote&gt; &lt;p&gt;&quot; ' +
           'something&quot;&nbsp;here.&lt;/p&gt;Q&lt;/blockquote&gt;')

// returns :
// "<div class="someclass"><blockquote> <p>"something" here.</p>Q</blockquote>"
Run Code Online (Sandbox Code Playgroud)

请注意,此方法应适用于所有HTML字符实体.


ste*_*e_c 7

这可能会有所帮助:

String.prototype.deentitize = function() {
    var ret = this.replace(/&gt;/g, '>');
    ret = ret.replace(/&lt;/g, '<');
    ret = ret.replace(/&quot;/g, '"');
    ret = ret.replace(/&apos;/g, "'");
    ret = ret.replace(/&amp;/g, '&');
    return ret;
};
Run Code Online (Sandbox Code Playgroud)