中英文截取字符串无乱码

原创 2015年07月06日 16:27:01

//PHP中英文截取无乱码
header(‘Content_type=text/php;charset=UTF-8’);
$str = ‘北京beijing大学’;
//关键在于判断往后截多少个字节上,这是这个函数的核心
//此函数是用客串来判断的,效率不高
//位运算效果会更好
//110x xxxx && 1110 0000 -> 1100 0000
//1110 xxxx && 1111 0000 -> 1110 0000
//位运算时不受英文字符最高位为0的影响,只是在转成字符串才受到影响
function utf8sub($str,$len){
if($len<0){
     return ”;
}
$res = ”;
$offset = 0;
$chars = 0;
$count = 0;
$length = strlen($str);//待截取字符串的字节数
while($chars<$len && $offset<$length){
     $high = decbin(ord(substr(str,offset,1)));//先截取客串的一个字节,substr按字节进行截取
     //重要突破,已经能够判断高位字节
    if(strlen($high)<8){
         $count = 1;
    }elseif (substr($high,0,3) == ‘110’) {
        $count = 2; //取两个字节的长度
    }elseif (substr($high,0,4) == ‘1110’) {
          $count = 3; //取三个字节的长度
    }elseif (substr($high,0,5) == ‘11110’) {
          $count = 4;
    }elseif (substr($high,0,6) == ‘111110’) {
         $count = 5;
    }elseif(substr($high,0,7)==’1111110’){
         $count = 6;
    }
    $res .= substr($str,$offset,$count);
    $chars +=1;
    $offset += $count;
     }
    return $res;
}
echo utf8sub($str,5);
echo utf8sub($str,10);

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

linux环境中英文切换配置以及乱码问题

问题这几天玩实验室的服务器,默认语言是中文的,有时候是挺不方便的,比如遇见一个比较复杂的问题,提示的信息是中文的,但是百度里根本没有好的资料,只能google,但是难道让我google搜中午么。因此就...
  • gatieme
  • gatieme
  • 2016年03月27日 14:47
  • 5154

Web UTF-8编码传给服务器后乱码:中英文支持技术方案

1 纯中英文支持技术方案(已开发通过验证)     优势: 1           该技术方案为真正意义上的中英文支持。 2           可与中文windows与第三方FTP(SSH)客...

winform的字符串转换乱码解决

  • 2013年05月21日 13:58
  • 463B
  • 下载

中英文字符转换解决乱码问题

  • 2012年02月23日 17:48
  • 8KB
  • 下载

使用 sql、 javascript 按字节截取、计算中英文混合字符串字节数

简介:使用sql和javascript两种方式统计中英文混合字符串中字节长度的办法。 历史: 以前做前台验证的时候,使用过用javascript计算中英文混合字符串的小算法,比较简单,如下: ...
  • zlcoy_1
  • zlcoy_1
  • 2012年02月09日 16:40
  • 2110

Java区分中英文截取字符串

/** * */ package org.noe.biz.tps.wrc; import org.apache.commons.lang3.StringUtils; /** * 区分中英文...

关于中英文混合字符串截取功能

有时候,我们经常会遇到这样的需求,提示层文字超出,需要JS做字符串截取,但是呢,我们常常会烦恼文字中英文混合如何判断,因为我们知道在JS中 string.length这个值是不考虑中英文的,但是计算机...

(JAVA)截取中英文混合字符串

题目: 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“...

字符串中的乱码,VBA

  • 2010年07月01日 20:10
  • 22KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:中英文截取字符串无乱码
举报原因:
原因补充:

(最多只允许输入30个字)