Php 将单引号添加到值

Php 将单引号添加到值,php,html,Php,Html,我有一个这样的剧本 <script> function myFunction(name) { document.getElementById("peep").innerHTML = "Rule " + name; } </script> 函数myFunction(名称) { document.getElementById(“peep”).innerHTML=“规则”+名称; } 通常我会这样做 <button onclick="myFunction('Atta

我有一个这样的剧本

<script>
function myFunction(name)
{
document.getElementById("peep").innerHTML = "Rule " + name;
}
</script>

函数myFunction(名称)
{
document.getElementById(“peep”).innerHTML=“规则”+名称;
}
通常我会这样做

<button onclick="myFunction('Attacking cost 5 engery')"> Attack </button>
攻击
请注意bob周围的“”,但我不知道如何将它们添加到此php变量中

<button onclick="myFunction(<?php echo $desc?>)"><?php echo $name; ?></button>
只需将
'
添加到
标签中,然后重试

  <button onclick="myFunction('<?php echo $desc;?>')">

此问题的一般解决方案是使用适当的转义函数

您有一个字符串要插入到JavaScript中,然后将该JavaScript插入到HTML属性中

首先使用
json\u encode
为JS转义字符串。由于JSON(或多或少)是JS的一个子集,因此可以适当地对其进行转义

然后使用
htmlspecialchars
对HTML的结果字符串进行转义

myFunction(<?php echo htmlspecialchars(json_encode($desc)); ?>)
myFunction()
这将为您提供
而不是
,但效果相同

它还将处理具有其他需要转义的字符(如新行)和更复杂的数据结构(数组或对象)的输入。


让我们看看如果执行PHP代码会发生什么:

button onclick="myFunction(Attack costs 5 energy.)">Attack</button>
button onclick=“myFunction(攻击消耗5能量”)>攻击
该代码不起作用。您需要在Javascript函数中包含一些引号:

button onclick="myFunction('<?php echo $desc; ?>')"><?php echo $name; ?></button>
按钮onclick=“myFunction(“”)”>

如果您多次在HTML代码中插入PHP标记,代码将变得混乱。因此,另一种方法可能是创建一种自定义参数,例如:

button onclick="myFunction('%description%')">%name%</button>
button onclick=“myFunction(“%description%”)”>%name%

然后让PHP将其替换为实际的描述和操作名称。

使用
\'
添加单个qoute。请尝试“myFunction(“”)“当我这样做时,我会得到结果
规则
,而var$desc永远不会显示。为了确保我得到了$desc,我将按钮名称改为$desc,它显示在按钮上。那么您还有什么问题吗?您可以看到它只显示规则(现在它已更改为描述)。因此,在描述之后,它永远不会显示这个实际的部分,就像您不在.php页面中一样,否则您将得到输出:-attack仍然有点新。但它将运行php连接到数据库。即使
mysql\u real\u escape\u string
没有被弃用,也不适合在这里使用,因为数据将插入JS和HTML,而不是mysql。没有pb,用户可以使用addslashes()而不是。看起来它不在php页面上。请尝试检查元素
onclick=“myFunction(“?php echo$desc;?”)“
-此答案中的代码不可能导致这种情况。
button onclick="myFunction(Attack costs 5 energy.)">Attack</button>
button onclick="myFunction('<?php echo $desc; ?>')"><?php echo $name; ?></button>
button onclick="myFunction('%description%')">%name%</button>