在HTML元素中编码文本

时间:2015-06-08 14:26:05

标签: javascript jquery html regex html-encode

我需要能够对HTML元素的文本进行编码,以及将HTML标记中的双引号更改为单引号。

例如:

<span style="color:#000;">He said "hello"</span>

将成为:

<span style='color:#000;'>He said &quot;hello&quot;</span>

我希望双引号基本消失,因为我将HTML字符串(如上所述)传输到输入的value属性。

我无法简单地转义HTML中的所有双引号,因为我需要将它放在DOM中。

我现在的方法(下面)只有一半有效,我对它不满意;它效率不高,只有一半有效(由于某种原因,它不会改变标签中的一些双引号)。

var newVal = $popup.find(".jqte_editor").html();

// replace the double quotes inside HTML tags with single quotes.
var regex = new RegExp("<([^\/].*?(?=>))", "g");
var result;
while ((result = regex.exec(newVal)) !== null) {
    var match = result[0];
    newVal = newVal.replace(match, match.replace(/"/g, "'"));
}

// replace double quotes outside of HTML tags with &quot;
regex = new RegExp(">([^\/].*?(?=<))", "g");
result = null;
while ((result = regex.exec(newVal)) !== null) {
    var match = result[0];
    newVal = newVal.replace(match, match.replace(/\"/g, "&quot;"));
}

我希望能够直接从数据库中提取HTML并放入DOM而无需通过Javascript进行解析来解码。

非常感谢任何和所有的帮助,如果我在任何地方都不清楚,请告诉我。

链接到JSFiddle:http://jsfiddle.net/2sv5g9wu/1/

0 个答案:

没有答案