2015-03-03 103 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