dedecms重新定义cn_substr函数截取字数的方法
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,小编给大家分享一下dedecms重新定义cn_substr函数截取字数的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!dedecms怎么重新定义cn_substr函数截取字数更准确?
千家信息网最后更新 2025年01月23日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安全错误
数据库的锁怎样保障安全
29岁学网络安全
山西商业软件开发定制价格
怎样查看大数据库地址
网络安全不止仿冒钓鱼黑客入侵
他强调网络安全和信息化
软件开发电子产品是什么
敏捷软件开发基础
南京市科技人才数据库
杭州软件开发公司迈度
黑河行业专业软件开发
头条认证服务器出错
vb数组找第二大的数据库
gps车辆监控服务器
违反网络安全法罚款好多倍
网络安全 扫描
青岛简易付网络技术
网络安全人员与程序员的区别
实时数据库转成关系数据库
计算机网络安全用学英语吗
安卓软件开发与管理工具
gdc服务器怎么过安全认证
杨浦区网络技术服务优化价格
网络安全攻防赛如何加固
公安局公安信息网络安全保密
网络安全一般月收入
数据库持续集成
c 获取连接数据库的ip
区块链是共享的数据库
软件开发合同封面模板下载
数据库锁表如何解锁