利用php怎么对中英文混合的字符串进行截取
发布时间:-01-04 15:31:24
来源:亿速云
阅读:103
作者:Leah
利用php怎么对中英文混合的字符串进行截取?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
php 截取中应为字符串,就不必再用substr或者mb_substr//截取想这样的字符串
a李三
利用ASCII/**
*
*中英混合的字符串截取
*@paramunknown_type$sourcestr
*@paramunknown_type$cutlength
*/
functionassoc_substr($sourcestr,$cutlength){
$returnstr='';
$i=0;
$n=0;
$str_length=strlen($sourcestr);//字符串的字节数
while(($n
$temp_str=substr($sourcestr,$i,1);
$ascnum=Ord($temp_str);//得到字符串中第$i位字符的ascii码
if($ascnum>=224){//如果ASCII位高与224,
$returnstr=$returnstr.substr($sourcestr,$i,3);//根据UTF-8编码规范,将3个连续的字符计为单个字符
$i=$i+3;//实际Byte计为3
$n++;//字串长度计1
}elseif($ascnum>=192){//如果ASCII位高与192,
$returnstr=$returnstr.substr($sourcestr,$i,2);//根据UTF-8编码规范,将2个连续的字符计为单个字符
$i=$i+2;//实际Byte计为2
$n++;//字串长度计1
}elseif($ascnum>=65&&$ascnum<=90){//如果是大写字母,
$returnstr=$returnstr.substr($sourcestr,$i,1);
$i=$i+1;//实际的Byte数仍计1个
$n++;//但考虑整体美观,大写字母计成一个高位字符
}elseif($ascnum>=97&&$ascnum<=122){
$returnstr=$returnstr.substr($sourcestr,$i,1);
$i=$i+1;//实际的Byte数仍计1个
$n++;//但考虑整体美观,大写字母计成一个高位字符
}else{//其他情况下,半角标点符号,
$returnstr=$returnstr.substr($sourcestr,$i,1);
$i=$i+1;
$n=$n+0.5;
}
}
return$returnstr;
}
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。