Encode HTML entities (v7)

Revision 7 of this benchmark created on


Preparation HTML

<script>
  function safe_tags_regex(str) {
    return str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
  }
  
  function safe_tags_dom(str) {
    var div = document.createElement('div');
    div.appendChild(document.createTextNode(str));
    return div.innerHTML;
  }
  
  function safe_tags_dom2(str) {
    var div = document.createElement('div');
    div.innerText = str;
    return div.innerHTML;
  }
  
  var tagsToReplace = {
    '&': '&amp;',
    '<': '&lt;',
    '>': '&gt;'
  };
  
  function replaceTag(tag) {
    return tagsToReplace[tag] || tag;
  }
  
  function safe_tags_replace(str) {
    return str.replace(/[&<>]/g, replaceTag);
  }
  
  function safe_tags_replace_inlinevars(str) {
    return str.replace(/[&<>]/g, function(t) {
      return ({
        '&': '&amp;',
        '<': '&lt;',
        '>': '&gt;'
      })[t] || t
    });
  }
  
  var safe_tags_replace_cachevars = (function() {
    var r = /[&<>]/g,
        ts = { '&': '&amp;', '<': '&lt;', '>': '&gt;' },
        f = function(t) { return ts[t] || t };
    return function(str) { return str.replace(r, f) }
  })();
</script>

Test runner

Ready to run.

Testing in
TestOps/sec
Using Regular Expression
var test = safe_tags_regex('if (a < b && c > d) {} // Héllö naõ');
ready
Using DOM textNode
var test = safe_tags_dom('if (a < b && c > d) {} // Héllö naõ');
ready
Using replace
var test = safe_tags_replace('if (a < b && c > d) {} // Héllö naõ');
ready
Using DOM innerText
var test = safe_tags_dom2('if (a < b && c > d) {} // Héllö naõ');
ready
Using replace (inline vars)
var test = safe_tags_replace_inlinevars('if (a < b && c > d) {} // Héllö naõ');
ready
Using replace (cached vars)
var test = safe_tags_replace_cachevars('if (a < b && c > d) {} // Héllö naõ');
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.