今天将php版本升级到5.3.0以上(我升级到php5.4.13)的版本后发现一个问题 htmlspecialchars 函数返回为空。
查了资料后,发现新版本对htmlspecialchars这个函数做了修改,当本地字符集不是utf-8的时候,需要默认指定当前使用的字符集,否则就可能会出现返回为空的情况。详情可参考这个文章 http://ouyangxiaofei914.blog.163.com/blog/static/13357443320117493932444/
因为我的程序版本有可能工作在GBK或者utf-8两种环境下,所以得要兼容各种字符集,因此写了一个替换函数带代替htmlspecialchars带来的问题.
1
2
3
4
5
6
7
8
9
10
11
|
/** *
html字符串格式化(用于打印显示,替换掉html中的特殊字符) *
@param string & $sHtml 需要处理的html *
@return string *
*/ public function toHtmlChars( $sHtml ) { static $maEntities = array ( '&' => '&' , '<' => '<' , '>' => '>' , '\'' => ''' , '"' => '"' ,
"\n"=> '<br
/>' , '
' => ' ' ); return strtr ( $sHtml , $maEntities ); } |
可以使用 toHtmlChars()这个函数来代替系统htmlspecialchars()函数
其中如果 【"\n"=>'', ' '=>' '】这个不用的话以去掉(这个只是为了让输出美观一点)。