是否有任何方法可以确定给定的字符串是否为HTML Escaped?
考虑以下javascript代码:
<script>
var str="hello";
var str_esc=escape(str);
document.write(isHTMLEscaped(str)) // *Should print False*
document.write(isHTMLEscaped(str_esc)); // *Should print True*
</script>
在上述情况下,是否存在等同于 isHTMLEscaped 的方法?
答案 0 :(得分:3)
我发现使用
escape(unescape(str))
将始终提供转义字符串。除非字符串本身包含转义表达式,否则unescape字符串将不执行任何操作。
注意:应该使用encodeURI(decodeURI(str)),因为现在折旧了。
答案 1 :(得分:1)
作为"hello"==escape("hello")
,不,你根本无法猜测是否应用了转义。
如果您想知道该字符串是否已被转义,那么您可以测试
var wasProbablyEscaped = /%\d\d/.test(str);
var wasProbablyNotEscaped = !wasProbablyEscaped && /%\d\d/.test(escape(str));
因为转义会在必须转义某些内容时添加%
后跟两位数字。但是你不能完全确定,因为当你逃避它们时,某些字符串不会改变。
在你的情况下,如果wasProbablyEscaped
成立,我可能会建议你不要逃避。