在做在PHP这份工作,人们可以遇到这种问题:通过PHP设置html属性的最佳实践是什么?
<span title="<?php echo $variable;?>">...
的问题是,如果$variable
包含双引号,应将其更改为\"
而这还不是故事的全部尚未:
<span title='<?php echo $variable;?>'>...
在这种情况下,我们需要改变单引号\'
,但保留双引号的。
那么我们该如何以一般财产的方式来做到这一点?
在做在PHP这份工作,人们可以遇到这种问题:通过PHP设置html属性的最佳实践是什么?
<span title="<?php echo $variable;?>">...
的问题是,如果$variable
包含双引号,应将其更改为\"
而这还不是故事的全部尚未:
<span title='<?php echo $variable;?>'>...
在这种情况下,我们需要改变单引号\'
,但保留双引号的。
那么我们该如何以一般财产的方式来做到这一点?
你总是希望HTML编码里面的东西HTML属性,您可以用htmlspecialchars
做到:
<span title="<?php echo htmlspecialchars($variable); ?>">
你可能想第二个参数($quote_style
)设置为ENT_QUOTES
。
唯一的潜在风险是$variable
可能已经被编码的,所以你可以希望的最后一个参数($double_encode
)设置为false
。
那么,在将任何文本输出为HTML之前,您应该使用htmlspecialchars()将其转义。所以只要确保(双)报价是正确更改。
注意该函数的第二个参数。
为了解决您的编辑[编辑:已取出与此同时]:当您将动态的JavaScript到你的网站,你应该前一清二楚,它会是什么样子。否则你会为XSS攻击广泛开门。这并不意味着您必须知道每个引号,但您应该足够了解如何将其嵌入到最终将其输出到HTML文件中的行中。
除此之外,
<a onclick="func('l')">
作品酷似
<a onclick="func('l')">
蝙蝠工具具有StringTool :: htmlAttributes($ arrayOfAttributes)方法,也没有工作。
证实这里HTML5规范: http://stackoverflow.com/questions/5320177/what-values-can-i-put-in-an-html-attribute-value – 2014-01-31 23:46:25
+1提到“ENT_QUOTES”。我已经在使用这个函数,但双引号会弄乱html。 – danielson317 2017-08-17 16:55:13