2015-03-03 100 views
-1

这是我的代码,以逃避逃逸'(单引号/ aprostrophe)不工作

E = { 
    "\x26": "\x26amp;", 
    "\x3c": "\x26lt;", 
    "\x3e": "\x26gt;", 
    '"': "\x26quot;", 
    "'": "\x26#39;", 
    "/": "\x26#x2F;" 
}; 

function myescape(a) { 
    return a.replace(/[&<>"'\/]/g, function(a) {return E[a] }) 
}; 

这里的问题是,当我逃避以下几点: '[email protected]#$%^&*()_+=-:"'

它会生成以下: '[email protected]#$%^&amp;*()-=+_';&quot;'

所以,基本上所有的角色都逃脱了。但是,单引号正在呈现。任何线索如何克服这一点?

我也试图加入以下meta标签(力工作)

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

+1

当你问你的问题(和之前的13个问题)时,在文本区域的右边是一个大的橙色**如何格式**框。值得一读。还有一个工具栏,上面有各种格式化辅助工具,还有一个** [?] **按钮,提供有用的信息。下面还有一个预览区域,显示你的问题的样子。请使用这些工具,以便您的代码可以正确显示在您的问题中,并附带语法高亮显示等。 – 2015-03-03 11:23:26

+0

好吧...反正我没有看到太大的区别... – 2015-03-03 11:25:20

+0

区别在于代码中没有随机反向代码而且代码还有有用的语法高亮显示。 – 2015-03-03 11:28:16

回答

1

这里的问题是,当我逃避以下几点:'[email protected]#$%^&*()_+=-:"'

它会生成以下:'[email protected]#$%^&amp;*()-=+_';&quot;'

不,它不;字符串周围的单引号是字符串分隔符,而不是字符串内容的一部分。如果他们在字符串的内容,他们会被替换,也:

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("'[email protected]#$%^&*()_+=-:\"'"));
<!-- 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>


这是一个社区维基,因为它基本上与代码中的注释,虽然它确实也回答了这个问题。

+0

感谢您的回复。但是,如果我用'''“替换'''”:'','用''“:”tilde“,' – 2015-03-03 13:24:17

+0

@SanTosh:如上所述,它无论如何工作。如果你看到它不起作用,它与你没有显示的代码有关。 – 2015-03-03 13:25:49