入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

php字符串截取固定值并且多余部分用省略号代替

创建时间:2013-11-20 投稿人: 浏览次数:142

utf8编码下:中文占 3个字节,英文和数字占 1个字节(可变编码)(变长编码)

gbk编码下:所有的中文、英文、数字都占2个字节(定长编码)

 

例如,有一个字符串,$str = “地方见21423435过很多苦法dsfsdfsdgsd规和地方给iu

如果是gbk编码:截取5个字符 ,相当于截取10个字节  substr()截取的是字节数

如果是utf8编码的话:截取5个字符:不知道截取多少个字节,因为不确定是中文还是英文

 

那么怎么判断呢?

通常根据一个字符的第一个字节,如果这个字节 的ASCII码 大于224 3个字节,如果第一个字节的ASCII码,大于192 2个字节,如果第一个字节的ASCII码小于192,占1个字节


例子:

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."....";
}
}
$asd="df袁过堂风然后他让同一日腾";
 echo GetPartStr($asd,10);
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
  • 上一篇:没有了
  • 下一篇:没有了
未上传头像