dedecms怎么重新定義cn_substr函數截取字數更準確

dedecms怎么重新定義cn_substr函數截取字數更準確

dedecms怎么重新定義cn_substr函數截取字數更準確?

dedecms的cn_substr()和cn_substr_utf8()截取的字符串ms不準,平時也用習慣cn_substr(),也不愿用什么cn_substr_utf8()今天弄了下,現在還是比較準了。按照一個漢字2個字節調用就行了

推薦學習:織夢cms

??

方法說明:

一、找到includehelpersString.helper.php把原來約33到102行(也就是定義cn_substr()函數的那段代碼)替換掉,你要是怕不行,可以先把這個文件備份下,親;

代碼如下:

/**? *?中英文截取字符串,漢字安2個字節? *? *?@access?public? *?@param?string?$str?需要截取的字符串? *?@param?int?$cutLen?截取的長度? *?@param?bool?$cutSlashes?是否去掉? *?@param?bool?$addSlashes?是加? *?@param?string?$oDot?截取后加的字符串,如經常用的三個點? *?@param?bool?$hasHtml?是否有html? *?@return?string? */? if?(?!?function_exists(‘cn_substr’)){? function?cn_substr($str,?$cutLen,?$oDot?=?null,?$hasHtml?=?false,?$cutSlashes?=?false,?$addSlashes?=?false)?{? global?$cfg_soft_lang;? $str?=?trim?(?$str?);? if?($cutSlashes)?$str?=?stripslashes?(?$str?);? if($hasHtml){? $str?=?preg_replace?(?“/(|r|n|s|[.+?])/is”,?‘?‘,?$str?);? $str?=?htmlspecialchars?(?$str?);? }else{? $str?=?htmlspecialchars?(?$str?);? }? if?($cutLen?&&?strlen?(?$str?)?>?$cutLen)?{? $nStr?=?”;? if?($cfg_soft_lang?==?‘utf-8′)?{? $n?=?0;? $tn?=?0;? $noc?=?0;? while?(?$n?=?$cutLen)break;? }? if?($noc?>?$cutLen)?$n?-=?$tn;? $nStr?=?substr?(?$str,?0,?$n?);? }?else?{? for($i?=?0;?$i??127)?{? $nStr?.=?$str?[$i]?.?$str?[$i?+?1];? $i?++;? }?else?{? $nStr?.=?$str?[$i];? }? }? }? $str?=?$nStr?.?$oDot;? }? if?($addSlashes)?$str?=?addslashes?(?$str?);? $str?=?htmlspecialchars_decode?(?$str?);? return?trim?(?$str?);? }? }

二、全站都使用cn_substr()函數,不管你程序是gbk還是utf8;

比如你要調用10個字(拼音漢字混雜):[field:title function=’cn_substr(@me,20)’]即可

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享