php 中英文字符串截取函数

  1. /**
  2. * php获取字符串中英文混合长度
  3. * @param $str string 字符串
  4. * @param $$charset string 编码
  5. * @return 返回长度,1中文=1位,2英文=1位
  6. */
  7. function strlength($str,$charset='utf-8'){
  8. if($charset=='utf-8') $str = iconv('utf-8','gb2312',$str);
  9. $num = strlen($str);
  10. $cnnum = 0;
  11. for($i=0;$i<$num;$i++){
  12. if(ord(substr($str,$i+1,1))>127){
  13. $cnnum++;
  14. $i++;
  15. }
  16. }
  17. $ennum = $num-($cnnum*2);
  18. $number = ($ennum/2)+$cnnum;
  19. return ceil($number);
  20. }
  21. //测试输出长度都为15 //开源代码phpfensi.com
  22. $str1 = '测试测试测试测试测试测试测试测';
  23. $str2 = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
  24. $str3 = 'aa测试aa测试aa测试aa测试aaaaaa';
  25. echo strlength($str1,'gb2312');
  26. echo strlength($str2,'gb2312');
  27. echo strlength($str3,'gb2312');