0

我正在寻找在 PHP 中转义一些 Javascript 文本的最佳方法,并且json_encode是错误的工作工具。

问题来自这一行:

echo " onclick=\"SwitchDiv('" . $option . "')\"";
如果 中有一个撇号$option,这是客户端失败的多汁球。但是做一个直线json_encode(在其他情况下效果很好)并没有帮助:
echo " onclick=\"SwitchDiv(" . json_encode($option) . ")\"";
这会创建一个输出字符串onclick="SwitchDiv("athlete's foot")",导致onclick值过早终止。onclick(如果我将值括在单引号中,也会发生这种情况。)

有没有一种优雅的方式来解决这个问题?我是否应该json_encode通过正则表达式将输出汇集到将转义单引号的正则表达式?

4

1 回答 1

3

json_encode是工作的正确工具。您的问题源于您还在HTML 属性中包含该 Javascript ,因此它也需要进行htmlspecialchars编码。

echo " onclick=\"SwitchDiv(" . htmlspecialchars(json_encode($option)) . ")\"";
于 2012-06-21T15:27:25.857 回答