PHP中JavaScript函数参数的转义引号

PHP中JavaScript函数参数的转义引号,javascript,php,syntax,escaping,Javascript,Php,Syntax,Escaping,在PHP中,我很难逃过引号。 我有一个产品表,每行有一个onclick函数,以产品名称作为参数 名称包含以英寸为单位的长度,因此名称包含引号。我在字符串周围包装了一个addslashes()。这会在引号前添加反斜杠,但由于某些原因,它似乎不会转义字符 以下是我的代码片段: <?$desc1 = addslashes($row['Desc1']);?> <tr class='tableRow' onclick='afterProductSelection("<?=$des

在PHP中,我很难逃过引号。 我有一个产品表,每行有一个onclick函数,以产品名称作为参数

名称包含以英寸为单位的长度,因此名称包含引号。我在字符串周围包装了一个
addslashes()
。这会在引号前添加反斜杠,但由于某些原因,它似乎不会转义字符

以下是我的代码片段:

<?$desc1 = addslashes($row['Desc1']);?>

<tr class='tableRow' onclick='afterProductSelection("<?=$desc1?>")'>

<td><?=$row['Desc1']?></td>

当我检查GoogleChrome中的元素时,语法的颜色表明它没有被转义,单击它会给我一个语法错误

可能是我遗漏了一些简单的东西。希望你能帮忙

addslashes()
函数是PHP早期过时的遗留问题;它不适合任何逃跑。不要用它。曾经无论如何-

我认为您正在寻找的函数是
htmlentities()



您正在生成一个编码为HTML的JavaScript字符串,因此需要编码两次:

  • 用于生成字符串
  • 用于编码为HTML
用于在JavaScript中从后端输出变量:

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

有许多不同的情况需要转义字符串
addslashes()
对于几乎所有这些问题都是错误的答案

addslashes()
函数是PHP早期过时的遗留问题;它不适合任何逃跑。不要用它。曾经无论如何

在您的特定情况下,由于您是从PHP创建Javascript数据,请使用
json\u encode()


json\u encode()
将获取一个PHP变量(无论是字符串、数组、对象还是其他)并将其转换为json字符串。JSON字符串基本上是完全转义的Javascript变量,包括字符串周围的引号等。这就是您需要做的。

我已经为addslashes()部分+1e了,甚至在阅读其余部分之前:)谢谢!实现和完善结果的最简单答案:)此答案包含正确信息,但不完整。使用
addslashes()
生成JavaScript字符串是错误的,会随机中断页面。
<tr onclick='afterProductSelection(<? print json_encode($desc1); ?>)'>