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

在PHP做这个工作时,可能会遇到这样的问题:

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

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

而这还不是全部的情况:

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

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

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

您总是希望在HTML属性中进行HTML编码,您可以使用htmlspecialchars进行编码:

 <span title="<?php echo htmlspecialchars($variable); ?>"> 

您可能需要将第二个参数( $quote_styleENT_QUOTESENT_QUOTES

唯一的潜在风险是$variable可能已经被编码了,所以你可能需要设置最后一个参数( $double_encode )为false

那么,在将任何文本输出到HTML之前,您应该使用htmlspecialchars()将其转义。 所以只要确保(双)报价是正确的更改。

注意该函数的第二个参数。

为了解决你的编辑问题[ 编辑:你已经删除了同时]:当你dynamic地将JavaScript放到你的网站上时,你应该事先知道它的样子。 否则,你为XSS攻击广泛开放。 这并不意味着你必须知道每一个引号,但你应该知道如何将它embedded到最终输出到HTML文件中的行中。

除此之外,

 <a onclick="func(&apos;l&apos;)"> 

工作完全一样

 <a onclick="func('l')"> 

Bat工具也有一个StringTool :: htmlAttributes($ arrayOfAttributes)方法。

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