从旧版升级到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('你的代码');
如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛