微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JavaScript 中的 HtmlSpecialChars 等价物是什么?

如何解决JavaScript 中的 HtmlSpecialChars 等价物是什么?

您的解决方代码存在问题 - 它只会转义每个特殊字符的第一次出现。例如:

escapeHtml('Kip\'s <b>evil</b> "test" code\'s here');
Actual:   Kip&#039;s &lt;b&gt;evil</b> &quot;test" code's here
Expected: Kip&#039;s &lt;b&gt;evil&lt;/b&gt; &quot;test&quot; code&#039;s here

这是正常工作的代码

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

更新

下面的代码将产生与上面相同的结果,但它的性能更好,特别是在大文本块上(感谢jbo5112)。

function escapeHtml(text) {
  var map = {
    '&': '&amp;',
    '<': '&lt;',
    '>': '&gt;',
    '"': '&quot;',
    "'": '&#039;'
  };

  return text.replace(/[&<>"']/g, function(m) { return map[m]; });
}

解决方法

显然,这比我想象的更难找到。它甚至是如此简单......

是否有与 PHP内置在
JavaScript中的htmlspecialchars等效的功能?我知道自己实现它相当容易,但是使用内置函数(如果可用)会更好。

对于那些不熟悉 PHP 的人,htmlspecialchars 会将类似的东西翻译<htmltag/>&lt;htmltag/&gt;

我知道这一点escape()encodeURI()但不要这样工作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。