1. 猴子技术宅首页
  2. CMS教程

织梦dedecms对任意字段截取固定值并且多余部分用省略号代替分享


utf8编码下:中文占 3个字节,英文和数字占 1个字节(可变编码)(变长编码)
gbk编码下:所有的中文、英文、数字都占2个字节(定长编码)例如,有一个字符串,$str = “地方见21423435过很多苦法dsfsdfsdgsd规和地方给iu”
如果是gbk编码:截取5个字符 ,相当于截取10个字节 substr()截取的是字节数
如果是utf8编码的话:截取5个字符:不知道截取多少个字节,因为不确定是中文还是英文那么怎么判断呢?
通常根据一个字符的第一个字节,如果这个字节 的ASCII码 大于224 占3个字节,如果第一个字节的ASCII码,大于192 占2个字节,如果第一个字节的ASCII码小于192,占1个字节

在include下的extend.func.php文件中加入以下函数:

function GetPartStr($str,$len)//$str字符串 $len 控制长度{ $one=0; $partstr=''; for($i=0;$i<$len;$i++){ $sstr=substr($str,$one,1);if(ord($sstr)>224){$partstr.=substr($str,$one,3);$one+=3;}elseif(ord($sstr)>192){$partstr.=substr($str,$one,2);$one+=2;}elseif(ord($sstr)<192){$partstr.=substr($str,$one,1);$one+=1;}}if(strlen($str)<$one){ return $partstr;}else{return $partstr.'….';}}

调用方法如下,比如要对电话号码的一个字段进行截取,前三位显示,后面的用….代替,写法:

[field:tel function=GetPartStr(@me,3)/]

此教程为登博教程原创,欢迎转载。转载请保留版权。


utf8编码下:中文占 3个字节,英文和数字占 1个字节(可变编码)(变长编码)
gbk编码下:所有的中文、英文、数字都占2个字节(定长编码)例如,有一个字符串,$str = “地方见21423435过很多苦法dsfsdfsdgsd规和地方给iu”
如果是gbk编码:截取5个字符 ,相当于截取10个字节 substr()截取的是字节数
如果是utf8编码的话:截取5个字符:不知道截取多少个字节,因为不确定是中文还是英文那么怎么判断呢?
通常根据一个字符的第一个字节,如果这个字节 的ASCII码 大于224 占3个字节,如果第一个字节的ASCII码,大于192 占2个字节,如果第一个字节的ASCII码小于192,占1个字节

在include下的extend.func.php文件中加入以下函数:

function GetPartStr($str,$len)//$str字符串 $len 控制长度{ $one=0; $partstr=''; for($i=0;$i<$len;$i++){ $sstr=substr($str,$one,1);if(ord($sstr)>224){$partstr.=substr($str,$one,3);$one+=3;}elseif(ord($sstr)>192){$partstr.=substr($str,$one,2);$one+=2;}elseif(ord($sstr)<192){$partstr.=substr($str,$one,1);$one+=1;}}if(strlen($str)<$one){ return $partstr;}else{return $partstr.'….';}}

调用方法如下,比如要对电话号码的一个字段进行截取,前三位显示,后面的用….代替,写法:

[field:tel function=GetPartStr(@me,3)/]

此教程为登博教程原创,欢迎转载。转载请保留版权。

www.dengb.comtruehttp://www.dengb.com/dedecms/1277792.htmlTechArticle织梦dedecms对任意字段截取固定值并且多余部分用省略号代替 utf8编码下:中文占 3个字节,英文和数字占 1个字节(可变编码)(变长编码)…

—-想了解更多的模板cms网站教程关注<猴子技术宅>

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/archives/114176

发表评论

电子邮件地址不会被公开。 必填项已用*标注