首先让我说 Javascript 不是我的强项,我对有关该主题的信息进行的所有搜索都导致了如何处理 url 编码/解码字符串。
我在处理类似于以下的一些代码时遇到了问题:
<a href="#" onclick="<?php echo "alert(''');"; ?>">test</>
我希望因为传递给警报的值是 url 编码的,所以当单击链接时,将显示一个警报框,其中包含值 '
。
事实证明,因为它位于 onclick 的引号之间,所以浏览器在执行之前将 ' 解码为单引号。基本上导致代码为 alert(''');
,这显然会严重中断。
以下工作正常。
<script>alert(''');</script>
首先,有没有办法禁用此行为,或者有巧妙的解决方法? (我猜不是)
我目前的解决方案是解码 html 编码的字符串,将斜线应用于引号,然后重新编码。显然不是很优雅。
我们将不胜感激更好的解决方案。
最佳答案
这是预期的行为。 HTML 源代码中的 HTML 实体在浏览器解析属性时会自动转换。这允许网站开发人员在不破坏页面的情况下包含特殊字符,例如属性中的引号。
使用htmlspecialchars
获得预期的效果:
<a href="#" onclick="<?php echo htmlspecialchars("alert(''');"); ?>">test</a>
关于php - 防止 Javascript 解码编码的 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9503331/