從舊版升級到PHP5.4,恐怕最麻煩的就是HTMLspecialchars這個問題了!當然,htmlentities也會受影響,不過,對于中文站來說一般用htmlspecialchars比較常見,htmlentities非常少用到。
可能老外認為網頁普遍應該是utf-8編碼的,于是苦了那些用GB2312,GBK編碼的中文站......!
PHP htmlspecialchars() 函數
PHP String 函數
實例
把預定義的字符 "<" (小于)和 ">" (大于)轉換為 HTML 實體:
<?php $str = "This is some <b>bold</b> text."; echo htmlspecialchars($str); ?>
以上代碼的 HTML 輸出如下(查看源代碼):
<!DOCTYPE html> <html> <body> This is some <b>bold</b> text. </body> </html>
以上代碼的瀏覽器輸出:
This is some <b>bold</b> text.
htmlspecialchars() 函數把預定義的字符轉換為 HTML 實體。
預定義的字符是:
& (和號)成為 &
" (雙引號)成為 "
' (單引號)成為 '
< (小于)成為 <
> (大于)成為 >
提示:如需把特殊的 HTML 實體轉換回字符,請使用 htmlspecialchars_decode() 函數。
在使用php5.4以上版本以上時會有一個函數可能會報錯
如下
Warning: htmlspecialchars(): charset `gbk' not supported, assuming utf-8
原因是因為5.4以上這個函數默認為utf8編碼沒有gbk所有傳進去的參數如果有中文就會報上面這個錯誤
如果你的程序用的是gbk的話就可以使用下面這個方法
給htmlspecialchars()傳后兩個參數
如下:
htmlspecialchars($str,ENT_COMPAT,'GB2312');//這樣就不會報錯啦
如果你的程序里用啦好多這個函數,那就要你一個一個替換嘍
還有一種情況,如果你的程序是utf8的那么檢查下你的php.ini中的字符集配置是不是下面gbk的如果是就改成utf-8同樣的就不會報錯啦
default_charset = "UTF-8" ;default_charset = "GBK"
按上面的把gbk這行注釋掉,使用默認utf-8的編碼就可以啦
函數寫法:
function JZ_htmlspecialchars($str) { global $cfg_soft_lang; if (version_compare(PHP_VERSION, '5.4.0', '<')) return htmlspecialchars($str); if ($cfg_soft_lang=='gb2312') return htmlspecialchars($str,ENT_COMPAT,'ISO-8859-1'); else return htmlspecialchars($str); }
調用:dede_htmlspecialchars('你的代碼');
如對本文有疑問,請提交到交流論壇,廣大熱心網友會為你解答??! 點擊進入論壇