dedecms重新定义cn_substr函数截取字数的方法
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,小编给大家分享一下dedecms重新定义cn_substr函数截取字数的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!dedecms怎么重新定义cn_substr函数截取字数更准确?
千家信息网最后更新 2026年11月01日dedecms重新定义cn_substr函数截取字数的方法
小编给大家分享一下dedecms重新定义cn_substr函数截取字数的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!
dedecms怎么重新定义cn_substr函数截取字数更准确?
dedecms的cn_substr()和cn_substr_utf8()截取的字符串ms不准,平时也用习惯cn_substr(),也不愿用什么cn_substr_utf8()今天弄了下,现在还是比较准了。按照一个汉字2个字节调用就行了
推荐学习:织梦cms
方法说明:
一、找到\include\helpers\string.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 < strlen ( $str ) ) { $t = ord ( $str [$n] ); if ($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) { $tn = 1; $n ++; $noc ++; } elseif (194 <= $t && $t <= 223) { $tn = 2; $n += 2; $noc += 2; } elseif (224 <= $t && $t < 239) { $tn = 3; $n += 3; $noc += 2; } elseif (240 <= $t && $t <= 247) { $tn = 4; $n += 4; $noc += 2; } elseif (248 <= $t && $t <= 251) { $tn = 5; $n += 5; $noc += 2; } elseif ($t == 252 || $t == 253) { $tn = 6; $n += 6; $noc += 2; } else { $n ++; } if ($noc >= $cutLen)break; } if ($noc > $cutLen) $n -= $tn; $nStr = substr ( $str, 0, $n ); } else { for($i = 0; $i < $cutLen - 1; $i ++) { if (ord ( $str [$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)']即可
看完了这篇文章,相信你对dedecms重新定义cn_substr函数截取字数的方法有了一定的了解,想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!
函数
字符
字符串
字数
方法
汉字
代码
字节
篇文章
还是
不行
三个
中英
也就是
全站
备份
完了
常用
拼音
文件
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
山东特亿宝互联网科技有限公司
西安纸贵互联网科技有限公司
中关村互联网 科技集团
科技互联网龙头
互联网科技小贷
智网互联网科技
互联网科技排名
云电互联网科技
互联网科技论坛
互联网科技咨询
科技伦理 互联网公司
隆华科技工业互联网
互联网系的金融科技公司
湖北码尼互联网科技有限公司电话
昭通互联网科技选哪家
赶超互联网科技 微信多开
中国科技创新与世界互联网大会
爱医互联网络科技
互联网金融科技名词解释
互联网科技和医药行业
手磨咖啡
互联网 科技创新
互联网科技英文
美国互联网黑科技
千方科技属于互联网企业吗
互联网科技商业
科技类公司包括互联网吗
企晟互联网信息科技有限公司
版纳互联网科技选哪家
优雇互联网科技有限公司