我正在寻找在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
输出漏斗?
json_encode
是适合这项工作的工具。您的问题源于您还将该 Javascript 包含在 HTML 属性中的事实,因此它也需要进行htmlspecialchars
编码。
echo " onclick='"SwitchDiv(" . htmlspecialchars(json_encode($option)) . ")'"";