您的位置:首页 > 编程语言 > PHP开发

php升级到5.4后,dedecms后台文本编辑器为空的问题

2015-01-15 15:52 489 查看
调试跟踪跟踪,就会发现,数据库读取是没问题的

也不关ckeditor的事,问题出在htmlspecialchars上,

估计很多国内的php系统都会遇到这个问题

解决方案:

1.苦逼的修改所有用到htmlspecialchars地方的程序

1.1 其第二个$flags参数,默认是ENT_COMPAT,因此改成

htmlspecialchars($str,ENT_COMPAT,'GB2312');

为什么不是GBK?因为没有GBK这个参数,如果强行使用GBK,则报错给你看:

Warning: htmlspecialchars(): charset `gbk' not supported, assuming utf-8

为了能使用GBK,则改成:

htmlspecialchars($str,ENT_COMPAT,'ISO-8859-1');

1.2.一样是改程序,但可以省略一个参数。

可以在网页头部加

ini_set('default_charset','gbk');

然后改成

htmlspecialchars($str,ENT_COMPAT,'');

文档中有写:An empty string activates detection from script encoding (Zend multibyte), default_charset and current locale (see nl_langinfo() and setlocale()), in this
order. Not recommended.

大概意思就是:传入空字符串则使用default_charset的编码

1.3.封装一个函数吧...本来htmlspecialchars这个单词一直不好记。

function htmlout($str) {

return htmlspecialchars($str,ENT_COMPAT,'ISO-8859-1');

}

然后去批量替换

1.4 封装一个函数,批量替换

function toHtmlChars($sHtml)

{

static $maEntities = array ('&' => '&', '<' => '<', '>' => '>', '\'' => ''', '"' => '"', "\n"=>'<br />', ' '=>' ');

return strtr($sHtml, $maEntities);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐