最近遇到一個問題,數據中包含中文引號,結果被轉義存儲到數據庫,取數據的時候用了htmlspecialchars_decode把實體轉義回去,結果發現并沒有生效,看了一下htmlspecialchars_decode只支持5個指定的實體轉換,其他的[我遇到的是中文引號 ldrquo;]
因此發現了html_entity_decode可以把所有的實體轉義回去~
另外,如果你在瀏覽器中測試,會發現是轉義回去的,這是因為瀏覽器自動給處理了。實際上是沒有轉回去的,可以到命令行試試哦~~
html_entity_decode:把所有的html實體轉換為原來的字符
與htmlentities() 相反
更準確地說,這個函數解碼所有的實體(包括所有的數字實體):a)對于所選擇的文檔類型必須是有效的 - 即對于XML,這個函數不解碼可能在某些DTD中定義的命名實體 - 以及b) 其中的字符或字符位于與所選編碼相關聯的編碼字符集中并且在所選文檔類型中被允許。 所有其他實體保持原樣。
htmlspecialchars_decode:將特殊的 HTML 實體轉換回普通字符
此函數的作用和 htmlspecialchars() 剛好相反。它將特殊的HTML實體轉換回普通字符。
被轉換的實體有: , (沒有設置ENT_NOQUOTES 時), (設置了 ENT_QUOTES 時), 以及 。
所以并不能把不包含在以上5個的其他轉換回去。
實例
把 HTML 實體轉換為字符:
?php$str = ? W3CS?h°°|§ echo html_entity_decode($str);?
上面代碼的 HTML 輸出如下(查看源代碼):
!DOCTYPE html html body ? W3CS?h°°|§ /body /html
上面代碼的瀏覽器輸出如下:
? W3CS?h°°|§
以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP !
相關推薦:
如何用php處理多圖上傳壓縮的功能
如何解決php中curl和soap方式請求服務超時的問題
以上就是在php中用html_entity_decode實現HTML實體轉義的詳細內容,PHP教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答