这是我逃脱的代码
E = {
"\x26": "\x26amp;",
"\x3c": "\x26lt;",
"\x3e": "\x26gt;",
'"': "\x26quot;",
"'": "\x26#39;",
"/": "\x26#x2F;"
};
function myescape(a) {
return a.replace(/[&<>"'\/]/g, function(a) {return E[a] })
};
这里的问题是,当我逃离以下时:
'!@#$%^&*()_+=-:"'
它生成以下内容:
'!@#$%^&*()-=+_';"'
所以,基本上所有的角色都被逃脱了。但是,单引号会按原样呈现。任何线索如何超越这个?
我还尝试添加以下元标记(dint work)
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
答案 0 :(得分:1)
这里的问题是,当我逃离以下时:
'!@#$%^&*()_+=-:"'
它生成以下内容:
'!@#$%^&*()-=+_';"'
不,它没有;字符串周围的单引号是字符串分隔符,不是字符串内容的一部分。如果他们在字符串的内容中,他们也会被替换:
E = {
"\x26": "\x26amp;",
"\x3c": "\x26lt;",
"\x3e": "\x26gt;",
'"': "\x26quot;",
"'": "\x26#39;",
"/": "\x26#x2F;"
};
function myescape(a) {
return a.replace(/[&<>"'\/]/g, function(a) {return E[a] })
};
snippet.log(myescape("'!@#$%^&*()_+=-:\"'"));
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
这是一个社区Wiki,因为它基本上是一个代码注释,尽管它实际上也回答了这个问题。