簡體   English   中英

JavaScript function 參數中的單引號轉義

[英]Single quote escape in JavaScript function parameters

我需要在 JavaScript function 參數中轉義單引號以避免這種情況:

onclick="Javascript:INSERT_PRODUCT('188267','WILL AND GRACE','32311','L'ANNIVERSARIO DINOZZE ','20101113|04|18|','13/11/2010 0.00.00','CANALE 5  ',this);"

但是我需要在 function 調用中轉義它們,因為我不知道將傳遞的值(我無法從數據庫中轉義的 db 變量)。

是否有 function 允許我執行以下操作?

onclick="Javascript:function(escape(param1), escape(param2), escape(param3));"
 JSON.stringify(plainTextStr).replace(/&/, "&").replace(/"/g, """)

將生成一個字符串,您可以安全地嵌入到帶引號的屬性中,並且在 JavaScript 解釋器看到時具有相同的含義。

唯一需要注意的是,某些Unicode換行符(U+2028 和 U+2029)在嵌入 JavaScript 字符串文字之前需要轉義,但 JSON 只要求轉義\\r\\n

用反斜杠轉義撇號:

onclick="INSERT_PRODUCT('188267','WILL AND GRACE ','32311','L\'ANNIVERSARIO DI NOZZE ','20101113|04|18|','13/11/2010 0.00.00','CANALE 5 ',this);"

從問題中可能並不完全清楚,但假設您想要的只是將其發送到 PHP 腳本以存儲在數據庫中,那么您當然會理想地使用 PHP 的各種方法,例如stripslashes() -- 但如果您是真的不要太花哨,只需在任何單引號前添加 1 個斜杠就足以從客戶端將 SQL 查詢直接發送到 PHP 中。 不安全,但也許也沒有必要。

str.replace(/'/g, "\\'"); // escaping \ with \, so used 2x

有訣竅。,例如在這樣的事情中:

var body = $('#body').val().replace(/'/g, "\\'");
myCustomSQLqueryFunction("UPDATE mytable SET `content`='"+ body +"';" );

MySQL 現在將像您在表單字段中看到的那樣存儲您的body

這個函數對我有用(它再次刪除並恢復引用):猜測要發送的數據是輸入元素的值,

var Url = encodeURIComponent($('#userInput').val().replace("'","\\'"));

然后再次獲取原文:

var originalText = decodeURIComponent(Url);
var cmpdetail = cmpdetail.replace(/'/g, "\\'");

它為我工作。

我更喜歡使用單引號來定義 JavaScript 字符串。 然后我按如下方式轉義嵌入的雙引號。

我就是這樣做的,基本上是str.replace(/[\\""]/g, '\\\\"')

 var display = document.getElementById('output'); var str = 'class="whatever-foo__input" id="node-key"'; display.innerHTML = str.replace(/[\\""]/g, '\\\\"'); //will return class=\\"whatever-foo__input\\" id=\\"node-key\\"
 <span id="output"></span>

我最近遇到了類似的問題,通過將單引號替換為相應的 unicode ( &#39; ) 解決了

最初我的代碼是這樣的,導致我得到的結果被截斷了(例如Jane's Coffee在輸出中變成了Jane )。

b.innerHTML += "<input type='hidden' value='" + arr[i] + "'>";

當我引入 unicode 替換(如下所示)時,我得到了我想要的確切 output

b.innerHTML += "<input type='hidden' value='" + arr[i].replace("'", "&#39;") + "'>";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM