2010-01-21 83 views
42

在做在PHP這份工作,人們可以遇到這種問題:通過PHP設置html屬性的最佳實踐是什麼?

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

的問題是,如果$variable包含雙引號,應將其更改爲\"

而這還不是故事的全部尚未:

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

在這種情況下,我們需要改變單引號\',但保留雙引號的。

那麼我們該如何以一般財產的方式來做到這一點?

回答

63

你總是希望HTML編碼裏面的東西HTML屬性,您可以用htmlspecialchars做到:

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

你可能想第二個參數($quote_style)設置爲ENT_QUOTES

唯一的潛在風險是$variable可能已經被編碼的,所以你可以希望的最後一個參數($double_encode)設置爲false

+2

證實這裏HTML5規範: http://stackoverflow.com/questions/5320177/what-values-can-i-put-in-an-html-attribute-value – 2014-01-31 23:46:25

+0

+1提到「ENT_QUOTES」。我已經在使用這個函數,但雙引號會弄亂html。 – danielson317 2017-08-17 16:55:13

3

那麼,在將任何文本輸出爲HTML之前,您應該使用htmlspecialchars()將其轉義。所以只要確保(雙)報價是正確更改。

注意該函數的第二個參數。

0

爲了解決您的編輯[編輯:已取出與此同時]:當您將動態的JavaScript到你的網站,你應該一清二楚,它會是什麼樣子。否則你會爲XSS攻擊廣泛開門。這並不意味着您必須知道每個引號,但您應該足夠了解如何將其嵌入到最終將其輸出到HTML文件中的行中。

除此之外,

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

作品酷似

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