为了账号安全,请及时绑定邮箱和手机立即绑定

将HTML标记转义为HTML实体的最快方法?

将HTML标记转义为HTML实体的最快方法?

将HTML标记转义为HTML实体的最快方法?我正在编写一个Chrome扩展,其中包括罗得执行以下任务:对以下字符串进行清理强权通过转换包含HTML标记<, >和&到&lt;, &gt;和&amp;分别。(换句话说,与PHP的htmlspecialchars(str, ENT_NOQUOTES)-我不认为真的需要转换双引号字符。)这是我迄今发现的最快的功能:function safe_tags(str) {     return str.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;') ;}但是,当我一次运行几千个字符串时,仍然有一个很大的滞后。有人能在这方面有所改进吗?它主要用于10到150个字符之间的字符串,如果这有区别的话。(我的一个想法是,不要费心去编码比符号更大的东西-这样做会有什么真正的危险吗?)
查看完整描述

3 回答

?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

这里有一种你可以做到的方法:

var escape = document.createElement('textarea');function escapeHTML(html) {
    escape.textContent = html;
    return escape.innerHTML;}function unescapeHTML(html) {
    escape.innerHTML = html;
    return escape.textContent;}

这是一个演示。


查看完整回答
反对 回复 2019-07-04
?
POPMUISE

TA贡献1765条经验 获得超5个赞

Martijn的方法作为一个原型函数:

String.prototype.escape = function() {
    var tagsToReplace = {
        '&': '&amp;',
        '<': '&lt;',
        '>': '&gt;'
    };
    return this.replace(/[&<>]/g, function(tag) {
        return tagsToReplace[tag] || tag;
    });};var a = "<abc>";var b = a.escape(); // "&lt;abc&gt;"


查看完整回答
反对 回复 2019-07-04
  • 3 回答
  • 0 关注
  • 602 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信