我有一个可以多次转义的HTML字符串。我想写一个函数,在其中我传递一个转义字符串,它返回unescape字符串。转义字符串可能会 n 次转义。
例如,我的转义字符串是: -
%253Cp%253Ebbbbbbbbb%253C/p%253E%3Cinput%20type%3D%27hidden%27%20id%3D%27grid_7_domType%27%20class%3D%27allDomObjects%27%20datatype%3D%27subpart%27%3E
如果我第一次看到这个字符串,那么我会得到: -
%3Cp%3Ebbbbbbbbb%3C/p%3E<input type='hidden' id='grid_7_domType' class='allDomObjects' datatype='subpart'>
这也是一个转义字符串。所以现在我再次浏览这个字符串,我得到了原始内容: -
<p>bbbbbbbbb</p><input type='hidden' id='grid_7_domType' class='allDomObjects' datatype='subpart'>
答案 0 :(得分:2)
您可以继续进行转义,直到您的字符串不再包含任何转义序列,即它不再与/%[0-9A-F]{2}/
匹配。
var s = "%253Cp%253Ebbbbbbbbb%253C/p%253E%3Cinput%20type%3D%27hidden%27%20id%3D%27grid_7_domType%27%20class%3D%27allDomObjects%27%20datatype%3D%27subpart%27%3E";
while (s.match(/%[0-9A-F]{2}/i)) {
s = unescape(s);
}
alert(s);
&#13;
可能更好地使用decodeURIComponent
代替unescape
。
答案 1 :(得分:0)
对于想要在Angular 2+中使用此解决方案的人来说,有一个npm包就是为此而生的。
npm install html-escape-unescape
使用这个软件包,它很简单:
{{ someStringToBeUnescaped?times | unescape:'recursive' }}
它将继续取消传递的字符串,直到它不再被取消,你得到HTML。 得到它here。
希望它有所帮助。