今天将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"=>'', ' '=>' '】这个不用的话以去掉(这个只是为了让输出美观一点)。