Decode HTML entities in JavaScript?

后端 未结 3 1476
情深已故
情深已故 2020-11-27 07:00

Sample conversions:

 & -> `&`
 >  -> `>`

Any small library function that can handle this?

相关标签:
3条回答
  • 2020-11-27 07:28

    Looks like this will do:

    function html_entity_decode(s) {
      var t=document.createElement('textarea');
      t.innerHTML = s;
      var v = t.value;
      t.parentNode.removeChild(t);
      return v;
    }
    

    Source

    0 讨论(0)
  • 2020-11-27 07:30

    I have on my utility belt this tiny function always:

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

    It will work for all HTML Entities.

    Edit: Since you aren't in a DOM environment, I think you will have to do it by the "hard" way:

    function htmlDecode (input) {
      return input.replace(/&/g, "&")
                  .replace(/&lt;/g, "<")
                  .replace(/&gt;/g, ">");
                  //...
    }
    

    If you don't like the chained replacements, you could build an object to store your entities, e.g.:

    function htmlDecode (input) {
      var entities= {
        "&amp;": "&",
        "&lt;": "<",
        "&gt;": ">"
        //....
      };
    
      for (var prop in entities) {
        if (entities.hasOwnProperty(prop)) {
          input = input.replace(new RegExp(prop, "g"), entities[prop]);
        }
      }
      return input;
    }
    
    0 讨论(0)
  • 2020-11-27 07:32

    A robust HTML entity encoder/decoder written in JavaScript.

    https://mths.be/he

    he (for “HTML entities”) is a robust HTML entity encoder/decoder written in JavaScript. It supports all standardized named character references as per HTML, handles ambiguous ampersands and other edge cases just like a browser would, has an extensive test suite, and — contrary to many other JavaScript solutions — he handles astral Unicode symbols just fine. An online demo is available.

    0 讨论(0)
提交回复
热议问题