由于公司需要多出几个字段用来描述文章,一开始是直接在普通文章的模型里新增一些字段的,后来发现有些字段显示为空,不确定是什么问题,于是新增了一个自定义的内容模型并且新增了一些自定义的字段,发现问题还是存在。排查之后发现是在字段名称存在中文的情况下才显示为空。于是就各种百度,发现问题发生在HtmlReplace()函数中,找到该函数,文件位于\include\helpers\filter.helper.php中,找到该函数
看到htmlspecialchars()函数就大概知道是这个内置函数的问题了(之前已经被坑过了。。)。由于文件编码是gbk2312.该函数在gbk2312的编码下htmlspecialchars()过滤含有中文字符时会输出为空。具体看一下实例:
在utf-8文件编码下:
<?php
$str='我是中文';
echo htmlspecialchars($str);
?>
//输出结果正常显示
在gb2312文件编码下:
输出为空
为了能支持gbk输出中文添加一个参数即可:
htmlspecialchars($str,ENT_COMPAT,'ISO-8859-1');
参考文章:
https://www.jb51.net/article/63392.htm
http://www.dede58.com/a/zhimengjiaocheng/dedefault/4875.html)