在做在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