用户名  找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1461|回复: 0

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

[复制链接]
发表于 2018-7-29 09:17:37 | 显示全部楼层 |阅读模式 来自 中国–河南–新乡
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文件中加入以下函数:

  1. function GetPartStr($str,$len)//$str字符串   $len 控制长度
  2. {
  3.   $one=0;
  4.   $partstr='';
  5.   for($i=0;$i<$len;$i++)
  6. { $sstr=substr($str,$one,1);
  7. if(ord($sstr)>224){
  8. $partstr.=substr($str,$one,3);
  9. $one+=3;
  10. }elseif(ord($sstr)>192){
  11. $partstr.=substr($str,$one,2);
  12. $one+=2;
  13. }elseif(ord($sstr)<192){
  14. $partstr.=substr($str,$one,1);
  15. $one+=1;
  16. }
  17. }
  18. if(strlen($str)<$one){
  19.    return $partstr;}else{
  20. return $partstr.'....';
  21. }
  22. }
复制代码


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

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


发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

▶专业解决各类DiscuzX疑难杂症、discuz版本升级 、网站搬家 和 云服务器销售!▶有偿服务QQ 860855665 更多精品应用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐

在飘仙这里购买服务器空间的好处

1、凡是在飘仙这边购买服务器空间的,飘仙所提供的服务都超出了空间商本身的义务

      在飘仙这里 飘仙会大家尽量少走冤枉路,不花冤枉钱 

2、服务器空间质量可靠,价格优惠,8折优惠长期折扣,不玩套路! 

    所谓套路就是:新用户首单超低配置的服务器空间 给个很大的折扣(还鼓励一次购买多年),表明看起来价格很低,等升级续费或二次购买的时候 价格爆贵!——新手大多不能准确估算自己需要什么样的配置

查看 »

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2025-4-6 13:54 , Processed in 0.046718 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表