微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

织梦dedecms自定义模型的部分字段无法读取

新建立了一个独立模型,可是突然发现模型列表中标题不能显示了,仔细分析发现并非完全不能显示,而是凡是带有中文的就不能显示。 

然后一步一步分析,发现dede在显示独立模型文章列表时对独立模型的每一个字段都经过了ChannelUnit->MakeField方法的处理,原因是独立模型文章表中,凡是联动类型字段都保存的是数值,因此,需要将其转换成对应的名称,除此之外还进行了一些其他类型字段的处理。其中包括对于type是text的字段,那Dedecms 会经过 HtmlReplace()方法进行处理。 
function MakeField($fname,$fvalue,$addvalue='') 

//处理各种数据类型 
$ftype = $this->ChannelFields[$fname]['type']; 
if($fvalue=='') 

if($ftype != 'checkBox') $fvalue = $this->ChannelFields[$fname]['default']; 

if($ftype=='text') 

$fvalue = HtmlReplace($fvalue); 

...... 
问题就出在HtmlReplace方法中。某些时候HtmlReplace的中文转换是有问题的。 

HtmlReplace 

(>=Dedecms 5.5) 

函数名:HtmlReplace 

功能去除html中不规则内容字符 

参数: 

$str='' 需要处理的字符串 

$rptype=0 返回类型 

$rptype = 0 表示仅替换 html标记 

$rptype = 1 表示替换 html标记同时去除连续空白字符 

$rptype = 2 表示替换 html标记同时去除所有空白字符 

$rptype = -1 表示仅替换 html危险的标记 

返回值: 

格式化后的字符串 

注:其实貌似HtmlReplace出现问题与否跟PHP的版本是有关系的,最新的PHP版本好像会出问题,但也有可能是配置的问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐