dedecms, 重新, 重新定义, 定义, 函数
dedecms的cn_substr()和cn_substr_utf8()截取的字符串ms不准,平时也用习惯cn_substr(),也不愿用什么cn_substr_utf8()今天弄了下,现在还是比较准了。 按照一个汉字2个字节调用就行了! 具体的方法说明: 一、找到\include\helpers\string.helper.php把原来约33到102行(也就是定义cn_substr()函数的那段具体代码如下)替换掉,您要是怕不行,可以先把这个文件备份下,亲; CopytoClipboard引用的内容:[www.veryhuo.com]/** *中英文截取字符串,汉字安2个字节 * *@accesspublic *@paramstring$str需要截取的字符串 *@paramint$cutLen截取的长度 *@parambool$cutSlashes是否去掉\ *@parambool$addSlashes是加\ *@paramstring$oDot截取后加的字符串,如经常用的三个点 *@parambool$hasHtml是否有html *@returnstring */ if(!function_exists(‘cn_substr’)){functioncn_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;$i127){$nStr.=$str[$i].$str[$i 1];$i ;}else{$nStr.=$str[$i];}}}$str=$nStr.$oDot;}if($addSlashes)$str=addslashes($str);$str=htmlspecialchars_decode($str);returntrim($str);}}二、全站都使用cn_substr()函数,不管您网站程序是gbk还是utf8; 比如您要调用10个字(拼音汉字混杂):[field:titlefunction='cn_substr(@me,20)']即可 截取 , 函数 , 字数 |
DEDECMS5.7登录后台慢的完美解决方法