【发布时间】:2011-01-07 18:01:21
【问题描述】:
在 PHP 中做这项工作时,可能会遇到这种问题:
<span title="<?php echo $variable;?>">...
问题是如果$variable包含双引号,应该改成\"
这还不是全部:
<span title='<?php echo $variable;?>'>...
在这种情况下,我们需要将单引号改为\',但保留双引号。
那么我们怎样才能以一般属性的方式来做呢?
【问题讨论】:
在 PHP 中做这项工作时,可能会遇到这种问题:
<span title="<?php echo $variable;?>">...
问题是如果$variable包含双引号,应该改成\"
这还不是全部:
<span title='<?php echo $variable;?>'>...
在这种情况下,我们需要将单引号改为\',但保留双引号。
那么我们怎样才能以一般属性的方式来做呢?
【问题讨论】:
Bat 工具有一个 StringTool::htmlAttributes ( $arrayOfAttributes ) 方法也可以完成这项工作。
【讨论】:
您总是希望在 HTML 属性中对内容进行 HTML 编码,您可以使用 htmlspecialchars:
<span title="<?php echo htmlspecialchars($variable); ?>">
您可能希望将第二个参数 ($quote_style) 设置为 ENT_QUOTES。
唯一的潜在风险是$variable 可能已经被编码,因此您可能想将最后一个参数($double_encode)设置为false。
【讨论】:
htmlspecialchars(json_encode($variable), ENT_QUOTES)。我没有在您的特定示例中对其进行测试,但我认为它应该适用于任何类型的值。
解决您的编辑问题 [编辑: 您同时删除了]:当您将动态 JavaScript 放置到您的网站上时,您应该在之前非常清楚它会做什么看起来像。否则你会为 XSS 攻击敞开大门。这并不意味着您必须知道每个引号,但您应该知道足够的知识来决定如何将它嵌入到您最终在 HTML 文件中输出它的行。
除此之外,
<a onclick="func('l')">
工作原理完全一样
<a onclick="func('l')">
【讨论】:
好吧,在将任何文本输出到 HTML 之前,您应该使用 htmlspecialchars() 对其进行转义。所以只要确保(双)引号被正确更改。
注意那个函数的第二个参数。
【讨论】: