簡體   English   中英

在PHP中為JavaScript函數參數轉義引號

[英]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)?>

http://ca1.php.net/htmlentities

您正在生成編碼為HTML的JavaScript字符串,因此您需要編碼兩次:

使用json_encode在JavaScript中從后端輸出變量:

<tr onclick='afterProductSelection(<? print json_encode($desc1); ?>)'>

注意:對於字符串輸出,不需要額外的引號。

暫無
暫無

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

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