dedecms重新定义cn_substr函数截取字数的方法
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,小编给大家分享一下dedecms重新定义cn_substr函数截取字数的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!dedecms怎么重新定义cn_substr函数截取字数更准确?
千家信息网最后更新 2025年12月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安全错误
数据库的锁怎样保障安全
重庆安防时钟监控网管服务器
应用软件开发定制公司
教师学习网络安全法学习感悟
张家口市电视台网络安全
ie添加代理服务器
绿茶服务器系统
阳江软件开发找谁
硬盘录像机服务器错误怎么办
检索的外文数据库
有关网络安全的反思
网络安全应用设计题
上海联诚网络技术有限公司
我的世界服务器如何掏空村民
软件开发电话技术
数据库建设需要入什么财务科目
搏击数据库
服务器ipmi管理
数据库创建报表方式6
富士康内部邮件服务器
34岁入行软件开发有人招吗
信息网络安全管理师证书
服务器riser模组是什么
电脑硬盘有个数据库
服务器的hdd
学生怎样为网络安全尽一份力
2021年青少年网络安全竞赛
网络安全周教育工作人员发言稿
数据库参数配置说明
在服务器上搭建jupyter
nba2kol数据库