在PHP中转义Javascript
Escaping Javascript in PHP
我正在寻找在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)) . ")'"";
相关文章:
- 使用Jinja2的JavaScript转义字符串
- Javascript-转义特定字符
- 使用JavaScript转义单引号
- Javascript转义全局替换
- JavaScript 转义在 WebHost 上不起作用
- JavaScript - 转义 JavaScript Object 属性值中的单引号
- Firefox JavaScript 转义错误
- JavaScript转义字符串不会在C#正则表达式中得到取消转义.取消逃脱()
- Javascript:转义 RegExp 字符串中的字符问题
- 将 Unicode 转换回 JavaScript 转义
- JavaScript转义序列
- ColdFusion/Javascript转义单引号
- Javascript转义Asp.net编码
- 使用javascript转义用户给定的文本.有些事情'unescape'插入页面时
- 正在为javascript转义.NET正则表达式模式
- C#和JavaScript-转义单引号字符
- 使用 javascript 转义 iframe
- JavaScript转义表单值
- 打印javascript转义文本时缺少脚本标记
- 使用Java、JSP、JavaScript转义引号