dedecms重新定义cn_substr函数截取字数的方法
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,小编给大家分享一下dedecms重新定义cn_substr函数截取字数的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!dedecms怎么重新定义cn_substr函数截取字数更准确?
千家信息网最后更新 2025年02月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安全错误
数据库的锁怎样保障安全
校园网络安全小抄报
计算机应用能力大赛数据库
服务器不装显卡能装系统吗
山东视频会议软件开发
数据库哪个是攻击速度
北京软件开发公司聚集地
路南网络安全吗
软件开发vrp
岳阳软件开发
连云港在线联想服务器厂家直供
网络安全的内容四年级
ibm服务器硬盘槽位
mysql数据库退出命令
戴尔服务器网卡灯亮屏幕不显示
什么是网吧服务器
江苏数据软件开发过程品质保障
软件连接服务器
浙江服务器配套机柜云主机
mysql数据库产品包括
ceph 存储服务器
北京软件开发公司聚集地
蓝海软件开发拍牌
速捷电梯服务器调试
西部数码创建数据库
相片拼图软件开发
大工网络安全
在昆明网络技术总监年薪多少
dii数据库网址
数据库处理程序
网络安全应急工作情况