在PHP中完成这项工作时,可能会遇到这种问题:
<span title="<?php echo $variable;?>">...
问题是,如果$variable
包含双引号,则应将其更改为\"
这还不是整个故事:
<span title='<?php echo $variable;?>'>...
在这种情况下,我们需要将单引号更改为\'
,但保留双引号。
那么我们怎么能以一般的财产方式来做呢?
答案 0 :(得分:82)
您始终希望对HTML属性中的内容进行HTML编码,您可以使用htmlspecialchars
执行此操作:
<span title="<?php echo htmlspecialchars($variable); ?>">
您可能希望将第二个参数($quote_style
)设置为ENT_QUOTES
。
唯一的潜在风险是$variable
可能已经被编码,因此可能想要将最后一个参数($double_encode
)设置为false
。< / p>
答案 1 :(得分:3)
好吧,在将任何文本输出到HTML之前,您应该使用htmlspecialchars()将其转义。所以只需确保(双)引用被正确更改。
注意该功能的第二个参数。
答案 2 :(得分:0)
要解决您同时删除的修改[修改]:当您将动态JavaScript放置到您的网站上时, 之前应该知道它是什么看起来像。否则你会为XSS攻击敞开大门。这并不意味着你必须知道每个引号,但是你应该知道如何将它嵌入最终在HTML文件中输出它的行。
除此之外,
<a onclick="func('l')">
与
完全相同<a onclick="func('l')">
答案 3 :(得分:0)
Bat工具有一个StringTool :: htmlAttributes($ arrayOfAttributes)方法,也可以完成这项工作。