首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Javascript中将特殊字符转换为HTML

在Javascript中将特殊字符转换为HTML
EN

Stack Overflow用户
提问于 2009-04-24 13:03:21
回答 24查看 413.7K关注 0票数 137

有谁知道如何在Javascript中将特殊字符转换为HTML

示例:

  • & (与号)变为&amp.
  • " (双引号)时变为set.
  • ' (单引号)仅当ENT_NOQUOTES为set.
  • < (小于)时变为&#039 (单引号)变为&lt.
  • > (大于)变为&gt.

(大于)时ENT_QUOTES变为ENT_QUOTES

EN

回答 24

Stack Overflow用户

回答已采纳

发布于 2009-04-24 05:15:01

您需要一个函数来执行以下操作

return mystring.replace(/&/g, "&amp;").replace(/>/g, "&gt;").replace(/</g, "&lt;").replace(/"/g, "&quot;");

但考虑到您希望对单引号/双引号进行不同的处理。

票数 88
EN

Stack Overflow用户

发布于 2009-04-24 06:06:39

在我看来,最好的方法是使用浏览器内置的HTML转义功能来处理许多情况。为此,只需在DOM树中创建一个元素并将该元素的innerText设置为您的字符串即可。然后检索元素的innerHTML。浏览器将返回一个HTML编码的字符串。

function HtmlEncode(s)
{
  var el = document.createElement("div");
  el.innerText = el.textContent = s;
  s = el.innerHTML;
  return s;
}

测试运行:

alert(HtmlEncode('&;\'><"'));

输出:

&amp;;'&gt;&lt;"

Prototype JS library也使用这种转义HTML的方法,尽管与我给出的简单示例不同。

注意:您仍然需要自己转义引号(双引号和单引号)。您可以使用其他人在这里概述的任何方法。

票数 218
EN

Stack Overflow用户

发布于 2009-04-24 14:45:01

此泛型函数将每个非字母字符编码为其htmlcode (数字):

function HTMLEncode(str) {
    var i = str.length,
        aRet = [];

    while (i--) {
        var iC = str[i].charCodeAt();
        if (iC < 65 || iC > 127 || (iC>90 && iC<97)) {
            aRet[i] = '&#'+iC+';';
        } else {
            aRet[i] = str[i];
        }
    }
    return aRet.join('');
}
票数 33
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/784586

复制
相关文章

相似问题

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