[英]Escaping quotation marks in PHP for JavaScript function argument
我無法在PHP中轉義引號。 我有一個產品表,每行都有一個onclick函數,產品名稱作為參數。
名稱包含以英寸為單位的長度,因此名稱包含引號。 我在字符串周圍包了一個addslashes()
。 這會在引號前添加一個反斜杠但由於某種原因它似乎沒有逃脫角色!
這是我的代碼片段:
<?$desc1 = addslashes($row['Desc1']);?>
<tr class='tableRow' onclick='afterProductSelection("<?=$desc1?>")'>
<td><?=$row['Desc1']?></td>
當我檢查谷歌瀏覽器中的元素時,語法的顏色表明這沒有被轉義,點擊它會給我一個語法錯誤。
可能是我想念的簡單事情。 希望你能幫忙!
有很多不同的情況需要轉義字符串。 addslashes()
是幾乎所有這些的錯誤答案。
addslashes()
函數是PHP早期的一個過時的addslashes()
。 它不適合任何逃脫。 不要使用它。 永遠。 為了任何東西。
在您的特定情況下,由於您是從PHP創建Javascript數據,請使用json_encode()
。
json_encode()
將獲取一個PHP變量(無論是字符串,數組,對象還是其他)並將其轉換為JSON字符串。 JSON字符串基本上是完全轉義的Javascript變量,包括字符串周圍的引號等。這是您需要做的。
addslashes()
函數是PHP早期的一個過時的addslashes()
。 它不適合任何逃脫。 不要使用它。 永遠。 為了任何東西。 - 斯普利
我認為你正在尋找的功能是htmlentities()
<?=htmlentities($desc1, ENT_QUOTES)?>
您正在生成編碼為HTML的JavaScript字符串,因此您需要編碼兩次:
使用json_encode
在JavaScript中從后端輸出變量:
<tr onclick='afterProductSelection(<? print json_encode($desc1); ?>)'>
注意:對於字符串輸出,不需要額外的引號。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.