中英文截取字符串无乱码

原创 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);

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

Java 截取中英文混合字符串

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

如何解决用substr()函数对中文字符串截取时的乱码

在PHP程序开发中,经常会执行字符串的截取操作,比如输出信息列表时,标题不宜过长,打印文章摘要时,也要执行一系列的字符串截取操作。遇到这些需求时,我们经常会想到使用substr()方法来实现,subs...
  • luyaran
  • luyaran
  • 2016年10月24日 19:37
  • 2873

JAVA面试题_根据字节数截取字符串,但是汉字不能截取半个。

截取字符串指定指定字节数的内容,如果指定的字节数在汉字的中间,汉字不能截取部分,只截取前面的内容。...
  • qq_29542611
  • qq_29542611
  • 2016年09月04日 01:56
  • 2240

PHP 中英文截取无乱码

在学习MySql 字符集时,解决了PHP中英文截取无乱码的问题。这个方法的核心在于判断取多少个字节上。 ...
  • gemire
  • gemire
  • 2014年04月26日 20:50
  • 1214

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

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

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

1 纯中英文支持技术方案(已开发通过验证)     优势: 1           该技术方案为真正意义上的中英文支持。 2           可与中文windows与第三方FTP(SSH)客...
  • lsweetyy
  • lsweetyy
  • 2011年10月24日 17:15
  • 741

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

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

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

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

Java的中英文混合截取字符串的问题解决方法

Java的中英文混合截取字符串的问题解决方法  Java默认的获取一个字符的长度(不管是否是中英文)都是作为一个字节来处理,但是插入数据库(Oracle)时中文却占了2个字节, 这点搞得人...
  • haolongabc
  • haolongabc
  • 2012年11月12日 23:14
  • 2675

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

简介:使用sql和javascript两种方式统计中英文混合字符串中字节长度的办法。 历史: 以前做前台验证的时候,使用过用javascript计算中英文混合字符串的小算法,比较简单,如下: ...
  • zlcoy_1
  • zlcoy_1
  • 2012年02月09日 16:40
  • 2139
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:中英文截取字符串无乱码
举报原因:
原因补充:

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