首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JavaScript中的HtmlSpecialChars等效项是什么?

JavaScript中的HtmlSpecialChars等效项是什么?
EN

Stack Overflow用户
提问于 2009-11-24 09:59:20
回答 11查看 214.1K关注 0票数 198

显然,这比我想象的要难找到。甚至很简单..。

JavaScript中有没有等同于PHP的htmlspecialchars的函数?我知道自己实现它相当容易,但是使用内置函数,如果有的话,会更好。

对于那些不熟悉PHP的人来说,htmlspecialchars可以将像<htmltag/>这样的东西翻译成&lt;htmltag/&gt;

我知道escape()encodeURI()不是这样工作的。

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2011-01-29 13:48:49

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

代码语言:javascript
运行
复制
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

下面是正常工作的代码:

代码语言:javascript
运行
复制
function escapeHtml(text) {
  return text
      .replace(/&/g, "&amp;")
      .replace(/</g, "&lt;")
      .replace(/>/g, "&gt;")
      .replace(/"/g, "&quot;")
      .replace(/'/g, "&#039;");
}

更新

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

代码语言:javascript
运行
复制
function escapeHtml(text) {
  var map = {
    '&': '&amp;',
    '<': '&lt;',
    '>': '&gt;',
    '"': '&quot;',
    "'": '&#039;'
  };
  
  return text.replace(/[&<>"']/g, function(m) { return map[m]; });
}
票数 363
EN

Stack Overflow用户

发布于 2017-01-17 22:01:56

下面是一个转义HTML的函数:

代码语言:javascript
运行
复制
function escapeHtml(str)
{
    var map =
    {
        '&': '&amp;',
        '<': '&lt;',
        '>': '&gt;',
        '"': '&quot;',
        "'": '&#039;'
    };
    return str.replace(/[&<>"']/g, function(m) {return map[m];});
}

和解码:

代码语言:javascript
运行
复制
function decodeHtml(str)
{
    var map =
    {
        '&amp;': '&',
        '&lt;': '<',
        '&gt;': '>',
        '&quot;': '"',
        '&#039;': "'"
    };
    return str.replace(/&amp;|&lt;|&gt;|&quot;|&#039;/g, function(m) {return map[m];});
}
票数 23
EN

Stack Overflow用户

发布于 2010-09-02 19:51:21

对于jQuery,它可以是这样的:

代码语言:javascript
运行
复制
var escapedValue = $('<div/>').text(value).html();

来自相关问题Escaping HTML strings with jQuery

正如注释中提到的,此实现保留了双引号和单引号。这意味着如果您需要将元素属性设置为原始html字符串,则不应使用此解决方案。

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1787322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档