什么是通过PHP设置HTML属性的最佳做法?
在PHP做这个工作时,可能会遇到这样的问题:
<span title="<?php echo $variable;?>">...
问题是,如果$variable
包含双引号,应该将其更改为\"
而这还不是全部的情况:
<span title='<?php echo $variable;?>'>...
在这种情况下,我们需要将单引号改为\'
,但是保留双引号。
那么我们怎样才能以一般的财产方式来做呢?
您总是希望在HTML属性中进行HTML编码,您可以使用htmlspecialchars
进行编码:
<span title="<?php echo htmlspecialchars($variable); ?>">
您可能需要将第二个参数( $quote_style
) ENT_QUOTES
为ENT_QUOTES
。
唯一的潜在风险是$variable
可能已经被编码了,所以你可能需要设置最后一个参数( $double_encode
)为false
。
那么,在将任何文本输出到HTML之前,您应该使用htmlspecialchars()将其转义。 所以只要确保(双)报价是正确的更改。
注意该函数的第二个参数。
为了解决你的编辑问题[ 编辑:你已经删除了同时]:当你dynamic地将JavaScript放到你的网站上时,你应该事先知道它的样子。 否则,你为XSS攻击广泛开放。 这并不意味着你必须知道每一个引号,但你应该知道如何将它embedded到最终输出到HTML文件中的行中。
除此之外,
<a onclick="func('l')">
工作完全一样
<a onclick="func('l')">
Bat工具也有一个StringTool :: htmlAttributes($ arrayOfAttributes)方法。