700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > php对中英文字符串进行截取 利用php怎么对中英文混合的字符串进行截取

php对中英文字符串进行截取 利用php怎么对中英文混合的字符串进行截取

时间:2020-07-22 18:00:40

相关推荐

php对中英文字符串进行截取 利用php怎么对中英文混合的字符串进行截取

利用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;

}

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。