千家信息网

dedecms字符串截取函数的方法

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,小编给大家分享一下dedecms字符串截取函数的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!dedecms字符串截取函数怎么用?dedecms 的cn_substr_utf8字符串
千家信息网最后更新 2026年11月02日dedecms字符串截取函数的方法

小编给大家分享一下dedecms字符串截取函数的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!

dedecms字符串截取函数怎么用?

dedecms 的cn_substr_utf8字符串截取函数商榷

推荐学习:织梦cms

在phpsir看到的这篇文章,主要是说下dedecms 的cn_substr_utf8函数好像有些问题,研究dedecms的朋友可以看下

在dedecms里面 cn_substr_utf8 函数是这样的

代码如下:

/*** utf-8中文截取,单字节截取模式** @access public* @param string $str 需要截取的字符串* @param int $slen 截取的长度* @param int $startdd 开始标记处* @return string*/if ( ! function_exists('cn_substr_utf8')){function cn_substr_utf8($str, $length, $start=0){if(strlen($str) < $start+1){return '';}preg_match_all("/./su", $str, $ar);$str = '';$tstr = '';

//为了兼容mysql4.1以下版本,与数据库varchar一致,这里使用按字节截取for($i=0; isset($ar[0][$i]); $i++){if(strlen($tstr) < $start){$tstr .= $ar[0][$i];}else{if(strlen($str) < $length + strlen($ar[0][$i]) ){$str .= $ar[0][$i];}else{break;}}}return $str;}}

其中

代码如下:

if(strlen($str) < $length + strlen($ar[0][$i]) )

一行可能会造成截取后多了一个字符,可以考虑改为

代码如下:

if(strlen($str) < $length + strlen($ar[0][$i]) -1 )

测试代码如下

代码如下:

$f = "你好fasdfa你fasdf#e#";$pos = strpos($f,'#e#');var_dump($pos);var_dump(cn_substr_utf8($f,$pos));var_dump(cn_substr_utf82($f,$pos));

function cn_substr($str, $slen, $startdd=0){global $cfg_soft_lang;if($cfg_soft_lang=='utf-8'){return cn_substr_utf8($str, $slen, $startdd);}$restr = '';$c = '';$str_len = strlen($str);if($str_len < $startdd+1){return '';}if($str_len < $startdd + $slen || $slen==0){$slen = $str_len - $startdd;}$enddd = $startdd + $slen - 1;for($i=0;$i<$str_len;$i++) { if($startdd==0) { $restr .= $c; } else if($i > $startdd){$restr .= $c;}

if(ord($str[$i])>0x80){if($str_len>$i+1){$c = $str[$i].$str[$i+1];}$i++;}else{$c = $str[$i];}

if($i >= $enddd){if(strlen($restr)+strlen($c)>$slen){break;}else{$restr .= $c;break;}}}return $restr;}

function cn_substr_utf8($str, $length, $start=0){if(strlen($str) < $start+1){return '';}preg_match_all("/./su", $str, $ar);

$str = '';$tstr = '';

//为了兼容mysql4.1以下版本,与数据库varchar一致,这里使用按字节截取for($i=0; isset($ar[0][$i]); $i++){if(strlen($tstr) < $start){

$tstr .= $ar[0][$i];}else{

if(strlen($str) < $length + strlen($ar[0][$i]) ){

$str .= $ar[0][$i];}else{

break;}}}return $str;}

function cn_substr_utf82($str, $length, $start=0){if(strlen($str) < $start+1){return '';}preg_match_all("/./su", $str, $ar);

$str = '';$tstr = '';

//为了兼容mysql4.1以下版本,与数据库varchar一致,这里使用按字节截取for($i=0; isset($ar[0][$i]); $i++){if(strlen($tstr) < $start){

$tstr .= $ar[0][$i];}else{

if(strlen($str) < $length + strlen($ar[0][$i]) -1 ) // phpsir 加了 -1 {

$str .= $ar[0][$i];}else{

break;}}}return $str;}

看完了这篇文章,相信你对dedecms字符串截取函数的方法有了一定的了解,想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

函数 字符 字符串 代码 字节 一致 数据 数据库 版本 篇文章 方法 一行 你好 完了 更多 朋友 标记 模式 知识 行业 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 博彦科技互联网金融 华服互联网科技怎么样 江苏根荣互联网科技 高科技互联网 互联网公司 科技公司 苏州大垚互联网科技 济南和联互联网科技有限公司 上海电发互联网科技有限公司 互联网教育科技公司vipkid 创业天下互联网科技有限公司 央行互联网金融科技公司 互联网科技有哪些公司 互联网科技与大数据专业 锡山区互联网智能科技产品供应 南通创西澳互联网科技有限公司 小米互联网科技园入驻 互联网科技融合创新 云南互联网科技学费 互联网对科技影响 科技发展第三阶段互联网时代 互联网和科技技术 互联网科技公司华为 科技伦理 互联网公司 成都玖崟互联网科技有限公司乐商圈怎么样 科技与互联网的利与弊 互联网和黑科技的看法 河南住房之家互联网科技 佛山市翊博互联网络科技有限公司 21世纪互联网科技成就 互联网科技对化妆品行业
0