通过PHP设置html属性的最佳做法是什么?

时间:2010-01-21 13:43:45

标签: php html

在PHP中完成这项工作时,可能会遇到这种问题:

<span title="<?php echo $variable;?>">...

问题是,如果$variable包含双引号,则应将其更改为\"

这还不是整个故事:

<span title='<?php echo $variable;?>'>...

在这种情况下,我们需要将单引号更改为\',但保留双引号。

那么我们怎么能以一般的财产方式来做呢?

4 个答案:

答案 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(&apos;l&apos;)">

完全相同
<a onclick="func('l')">

答案 3 :(得分:0)

Bat工具有一个StringTool :: htmlAttributes($ arrayOfAttributes)方法,也可以完成这项工作。

https://github.com/lingtalfi/Bat/blob/master/StringTool.php