使用JS-jQuery,我怎样才能使用unescape html并将`quotes&<>`放回字符串中?

Squ*_*rrl 5 javascript jquery escaping

基本上我想在我使用之后撤消我在下面找到的escapeHTML()函数.

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(a);
console.log(b);//should log "<div> yo & yo squirrl's </div>"
Run Code Online (Sandbox Code Playgroud)

我尝试了明显但没有交易.http://jsfiddle.net/ej6bX/

Aru*_*hny 18

你需要使用

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

使用jQuery的更明确的方法可能是

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

function unescapeHtml(safe) {
    return $('<div />').html(safe).text();
}
Run Code Online (Sandbox Code Playgroud)

演示:小提琴

  • 根据http://stackoverflow.com/questions/1147359/how-to-decode-html-entities-using-jquery#comment6018122_2419664,您的第二个"unes​​capeHtml"*不安全,可能导致XSS攻击. (4认同)