为什么在html转义中应首先转义&符号?

时间:2014-08-08 18:38:15

标签: javascript html escaping

如果首先没有转义&符号,为什么类似的转义代码不适用于html元素中的html转义?我把& amp放到第一位后一切正常。

  function escapeHtml(unsafe) {
            return unsafe
                 .replace(/&/g, "&")
                 .replace(/</g, "&lt;")
                 .replace(/>/g, "&gt;")
                 .replace(/"/g, "&quot;")
                .replace(/'/g, "&#039;");
     }

由于

1 个答案:

答案 0 :(得分:4)

考虑一下会发生什么:

This sentence has an <html> tag in it

如果您先进行<>替换,最后会使用

This sentence has an &lt;html&gt; tag in it

然后你进行&替换,然后获取

This sentence has an &amp;lt;html&amp;gt; tag in it

现在您的&lt;&gt;已损坏,因为<>个字符已经过双重编码。

如果您首先编码&,那么事情就是“正常工作”。