[英]greater/less than signs are not escaped
我試圖逃避服務器端(Node.js和Express.js)中包含更多/更少符號(<,>)的字符串,我在服務器端使用此代碼
socket.on('message', function(data) {
data.message = data.message.replace(/\</g,"<") //for <
data.message = data.message.replace(/\>/g,">") //for >
io.in(socket.current_room).emit('message',{message :data.message, id: socket.id});
});
在客戶端(在socket.on('message')
函數內)
output.innerHTML += `<div class="mymessage-container"><div class="mymessage"><p class="me">` + message + '</p></div></div>'
它替換了符號,但它將它們顯示為已替換,例如:用戶發送消息: <hello>
,消息將顯示為<hello>
。 我該如何解決? 謝謝!
只需在客戶端使用第二個replace
- 並且您正在使用模板文字,因此您可以使用${}
模式:
output.innerHTML += `<div class="mymessage-container"><div class="mymessage"><p class="me">${message.replace(/\<\;/g, "<").replace(/\>\;/g, ">")}</p></div></div>`
你得到的原因<hello>
是因為data.message.replace你傳遞的第二個參數是將找到的那個字符串。
你可以在這里找到關於替換的解釋。
如果你想把它留空,你可以做這個data.message = data.message.replace(/\\</g,"")
。
旁注:您不需要在<或>之前添加反斜杠,因為它不是特殊字符。 這對我來說很好用data.message.replace(/</g,"")
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.