web建站教程
  1. 首页
  2. vuejs
  3. js
  4. 好玩
  5. AIGC工具
  6. 前端知识
  7. 百度echarts
  8. 更多
    php入门
    nodejs
    mockjs
    reactjs
    mysql
    wordpress
    织梦cms
    帝国cms
    git教程
    IT知识
    模板大全
    休息站
    手机应用

织梦cms重新定义cn_substr函数截取字数准确

625 ℃

dedecms的cn_substr()和cn_substr_utf8()截取的字符串ms不准,平时也用习惯cn_substr(),今天我们来重新定义cn_substr函数截取字数准确。

方法说明:
一、找到/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获取文章内容如何过滤掉html标签

织梦dedecms如何用函数cn_substr()截取字符串

标签: cn_substr

上面是“织梦cms重新定义cn_substr函数截取字数准确”的全面内容,想了解更多关于 织梦cms 内容,请继续关注web建站教程。

当前网址:https://ipkd.cn/webs_610.html

声明:本站提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请发送到邮箱:admin@ipkd.cn,我们会在看到邮件的第一时间内为您处理!

当前位置: 网站首页 > 织梦cms
本文共计1570个字,预计阅读时长11分钟
生活小工具,收录了80多款小工具
上一篇: 推荐一款免费可商用英文字体——Atkinson Hyperlegible
下一篇: 推荐一款免费好看的中文设计字体——字体传奇特战体
x 打工人ai神器