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

[复制链接]
查看1081 | 回复8 | 2020-5-8 09:48:04 | 显示全部楼层 |阅读模式
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.freedede.cn)这样教程比较齐全的,现在好了,学习开发使用织梦dedecms系 统不用东奔西跑了,直接来自由织梦就好了,提供织梦cms详细的使用教程和织梦建站教程,包括dedecsm的安装、模板开发教程、安 全配置等,DedeCMS从入门到精通建站就是如此轻松。
回复

使用道具 举报

喜欢头像那女纸 | 2020-11-23 12:42:43 | 显示全部楼层
没积分哈,谁来帮帮我啊
回复

使用道具 举报

嗅觉Y不缺失 | 2021-6-6 16:14:06 | 显示全部楼层
这个站很好,资源多,教程全
回复

使用道具 举报

我能陪你变老 | 2021-8-27 17:14:27 | 显示全部楼层
谢谢楼主分享的资源,爱了~~~
回复

使用道具 举报

鬼子进了村部 | 2022-4-20 19:05:30 | 显示全部楼层
这个下载站资源真齐全
回复

使用道具 举报

123457276 | 2022-4-25 14:55:00 | 显示全部楼层
我是来白嫖资源的!
回复

使用道具 举报

Creseda | 2022-6-1 21:42:13 | 显示全部楼层
厉害了,悟空源码资源多教程多!
回复

使用道具 举报

天使粉粉魏 | 2023-9-5 02:09:54 | 显示全部楼层
5kym.cn这个站资源太全了
回复

使用道具 举报

15155324777 | 2024-1-17 00:57:59 | 显示全部楼层
厉害了,悟空源码资源多教程多!
回复

使用道具 举报

雍不言弃 | 2024-2-3 02:53:02 | 显示全部楼层
很不错的资源站
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则