Squirrl Squirrl - 2 years ago 271
Javascript Question

Using JS - jQuery, how can I unescape html and put `quotes & <>` back in the string?

Essentially I want to undo the escapeHTML() function I found below, after I used it.

function escapeHtml(unsafe) {
return unsafe
.replace(/&/g, "&amp;")
.replace(/</g, "&lt;")
.replace(/>/g, "&gt;")
.replace(/"/g, "&quot;")
.replace(/'/g, "&#039;");

function unescapeHtml(safe) {
return safe
.replace("&amp;", /&/g)
.replace("&lt;", /</g)
.replace( "&gt;", />/g)
.replace("&quot;", /"/g)
.replace("&#039;", /'/g);

var a = escapeHtml("<div> yo & yo squirrl's </div>");
var b = unescapeHtml(a);
console.log(b);//should log "<div> yo & yo squirrl's </div>"

I tried the obvious but no deal. http://jsfiddle.net/ej6bX/

Answer Source

You need to use

function unescapeHtml(safe) {
    return safe.replace(/&amp;/g, '&')
        .replace(/&lt;/g, '<')
        .replace(/&gt;/g, '>')
        .replace(/&quot;/g, '"')
        .replace(/&#039;/g, "'");

A more clear approach using jQuery could be

function escapeHtml(unsafe) {
    return $('<div />').text(unsafe).html()

function unescapeHtml(safe) {
    return $('<div />').html(safe).text();

Demo: Fiddle

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download