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

utf8编码下:中文占 3个字节,英文和数字占 1个字节(可变编码)(变长编码) gbk编码下:所有的中文、英文、数字都占2个字节(定长编码) 例如,有一个字符串,$str = 地方见21423435过很多苦法dsfsdfsdgsd规和地方给iu 如果是gbk编码:截取5个字符 ,相当
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)/]

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

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

dedecms织梦无需登录注册可下单购买的修改,首先找到/plus/carbuaction.php文件,找到如下代码: //确认用户登录信息if($cfg_ml-IsLogin()){ $userid = $cfg_ml-M_ID;}else{ $username = trim($username); $password = trim($password); if(empty($username)
用过织梦dedecms的人都知道,织梦会员系统相当强大,跟论坛程序差不多,对于使用会员系统的人来说,织梦系统足够用的了,但是,有时候,织梦系统很多的地方又不是我们所希望,或都说,有的地方不适合我们使用,这时候就要对织梦会员系统进行二次开发,所以,
我们在用到织梦dedecms的会员功能时候,注册页面的注册项需要增加,比如想多加一个手机号的字段,需要怎么操作呢?下面我们以增加一个手机号的字段为例子 1、找到网站目录下的/member/templets/reg-new.htm,在合适位置增加一行表单,代码如下: lispan手机
SQL语句中,有统计的函数,我们可以通过在织梦中使用SQL语句统计的方法,在列表页内显示该栏目共有多少篇文章。这样做的好处是,有助于提升用 户体验。比如说我一个文章列表下面有10篇文章,就自动统计出10篇,到20篇的时候自动统计成20篇。这样用户对网站的
我们在做 织梦模板 开发时,有时需要在artlist 和list标签中调用出图集中的图片,同时可以自定调用几张图片。跟版网整理了个一个这样功能的自定义函数。调用后效果如下: dedecms织梦artlist和list标签调用图集图片实现方法 函数代码 请将代码加入到 /includ
大家都知道,Discuz程序在发文章时有个【隐藏】功能,可以限制这个隐藏内容供某些级别的会员查看。 在织梦模板中,做些改动,也是可以实现的。例如:电话号码,下载地址等等。 前提是织梦开启会员功能,已经有了自定义字段。 一、建立文件 ajax_loginsta_c.p