新建立了一個獨立模型,可是突然發現模型列表中標題不能顯示了,仔細分析發現并非完全不能顯示,而是凡是帶有中文的就不能顯示。
然后一步一步分析,發現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的中文轉換是有問題的。
(>=DedeCMS 5.5)
函數名:HtmlReplace
功能:去除html中不規則內容字符
參數:
$str='' 需要處理的字符串
$rptype=0 返回類型
$rptype = 0 表示僅替換 html標記
$rptype = 1 表示替換 html標記同時去除連續空白字符
$rptype = 2 表示替換 html標記同時去除所有空白字符
$rptype = -1 表示僅替換 html危險的標記
返回值:
格式化后的字符串
注:其實貌似HtmlReplace出現問題與否跟php的版本是有關系的,最新的php版本好像會出問題,但也有可能是配置的問題。
新聞熱點
疑難解答