dedecms怎么重新定義cn_substr函數(shù)截取字?jǐn)?shù)更準(zhǔn)確?
dedecms的cn_substr()和cn_substr_utf8()截取的字符串ms不準(zhǔn),平時也用習(xí)慣cn_substr(),也不愿用什么cn_substr_utf8()今天弄了下,現(xiàn)在還是比較準(zhǔn)了。按照一個漢字2個字節(jié)調(diào)用就行了
推薦學(xué)習(xí):織夢cms
??
方法說明:
一、找到includehelpersString.helper.php把原來約33到102行(也就是定義cn_substr()函數(shù)的那段代碼)替換掉,你要是怕不行,可以先把這個文件備份下,親;
代碼如下:
/**? *?中英文截取字符串,漢字安2個字節(jié)? *? *?@access?public? *?@param?string?$str?需要截取的字符串? *?@param?int?$cutLen?截取的長度? *?@param?bool?$cutSlashes?是否去掉? *?@param?bool?$addSlashes?是加? *?@param?string?$oDot?截取后加的字符串,如經(jīng)常用的三個點(diǎn)? *?@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()函數(shù),不管你程序是gbk還是utf8;
比如你要調(diào)用10個字(拼音漢字混雜):[field:title function=’cn_substr(@me,20)’]即可
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載。
THE END
喜歡就支持一下吧
相關(guān)推薦