我有某種形式的數值,其中包括HTML實體,例如:爲什麼PHP會自動自動解碼HTML實體?
<option value="Coupè"> Coupè </option>
但是,一旦形式發佈到服務器,如果我做一個print_r($_POST);
然後查看該頁面的源代碼,實體ISN那裏,它的實際重音字符。
我想我可以通過htmlentities來運行發佈數據,但我想知道這是PHP的這種標準行爲嗎?或者這是我可以關閉的東西嗎?
我有某種形式的數值,其中包括HTML實體,例如:爲什麼PHP會自動自動解碼HTML實體?
<option value="Coupè"> Coupè </option>
但是,一旦形式發佈到服務器,如果我做一個print_r($_POST);
然後查看該頁面的源代碼,實體ISN那裏,它的實際重音字符。
我想我可以通過htmlentities來運行發佈數據,但我想知道這是PHP的這種標準行爲嗎?或者這是我可以關閉的東西嗎?
PHP不是;瀏覽器是。你可以用Firebug或嗅探器來檢查。
瀏覽器在遇到它時解碼實體,這就是它們的用途。字符串è
意味着「親愛的瀏覽器,請用'è'這個字符替換它,因爲無論什麼原因,我都不能直接寫'è'。」
瀏覽器將解碼頁面中使用的任何實體,而不管它們是否可見文本或屬性值。
所以,因爲瀏覽器被解碼的實體,您必須實體編碼本身,如果你想使用,可以被解碼爲一個實體的字符串:
Coup&#232;
這將被解碼瀏覽器
Coupè
我會質疑使用這雖然,在這個時代,在大多數情況下,Unicode字符應該不會構成問題,以保證這樣的編碼開始。只需寫下「Coupè」並完成它。 :)
他說他查看了源代碼雖然... – alex 2010-02-22 03:16:24
@alex頁面的來源沒有解碼,表單提交的值是。 – 2010-02-22 03:17:04
瀏覽器在將其作爲後期值發送之前更改該值。 – Marius 2010-02-22 03:17:43