Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Converting sanitised html back to displayable html

Tags:

I'm getting html data from a database which has been sanitised.

Basically what I'm getting is something like this:

<div class="someclass"><blockquote>   <p>something here.</p> </blockquote> 

And so on. So if I try to display it, it is displaying as

<div class="someclass"><blockquote> <p>something here</p> </blockquote> 

What I want is to convert it to proper html before displaying, so that the content displays properly, without the tags.

What's the easiest way to do this using javascript?

Just want to note here that I'm working with in Adobe AIR. So I don't have any alternatives.

like image 758
Anand Avatar asked Aug 08 '09 13:08

Anand


2 Answers

You could create an element, assign the encoded HTML to its innerHTML and retrieve the nodeValue from the text node created on the insertion.

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>" 

Note that this method should work with all the HTML Character Entities.

like image 53
Christian C. Salvadó Avatar answered Nov 14 '22 04:11

Christian C. Salvadó


This could help in a snap:

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; }; 
like image 35
steve_c Avatar answered Nov 14 '22 06:11

steve_c